Merging: Development Plan

How shall we proceed with adding merge capabilities to Vesta? The current plan is one of progressive refinement through a number of stages:

  1. We have two usable prototype scripts available for use today:

    • vmerge2.py uses the (PreciseCodevilleMerge) algorithm written by Bram Cohen. This is the currently preferred merge script.

    • vmerge is an older script using the simple 3-way merge algorithm (specifically the merge(1) command from RCS). This will give the user a greater number of conflicts requiring manual resolution than the more advanced algorithm in vmerge2.py.

  2. With those two scripts as stopgap options for users, we can begin to tackle the problem of merging directory structure changes (e.g. rename tracking, file name conflicts, etc.). This will at least involve:
    • A detailed review of other systems (see ToolComparison)

    • Some significant changes to the design and implementation of the repository's internal representation
  3. Once the core capability for proper directory structure tracking is in place, there are a variety of user-interface issue which we need to work on:
    • vundo
    • Full support for CVS-style concurrency (all checkouts are non-exclusive, merge before promoting to the next main-line version, etc.)
    • Supporting different merge tools for different file types
  4. We might invest in developing a new text merging algorithm. While PreciseCodevilleMerge is pretty functional today, it's future is a little unclear and there are some other interesting ideas out there that we may want to adapt and/or modify.

Sub-Pages

/NonTextFiles: How do we handle binary files and other formats?

/CurrentState: Where are we now?

/ToDo : What do we have to do to reach our goals? (incl. references to tracker entries)

/Vmerge2Notes : Some notes made while working on vmerge2.py changes (on handling different cases at the directory structure level)

/CachingHistory : Ideas on how we can use the Vesta Cache to store version history information so speed up future merges