Merge Browser

Merge Browser

The Merge Browser is for interating different forks of a project. If two developers are pursuing parallel lines of development, they can use the Monticello merge browser to move code back and forth between them.

Monticello 2.0 and later uses a different merge algorithm than Monticello 1.x and most other versioning systems. It tracks version history for each element individually, rather than as part of a package. This leads to greater flexibility when merging and more accurate detection of conflicts.

The Merge Browser has four panes. The pane on the upper left shows a list of elements. These are the elements where the verison in the snapshot is different from the version in the image. Selecting an element will cause that element to be displayed in the other three panes.

The pane on the lower left shows the version of the element that is currently present in the image. If it is not present in the image, the pane will display "-- null --". This is called the local version.

The pane on the upper right shows the version of the element that is in the snapshot being included. Again, if there is no version of that element in the snapshot, "-- null --" will be displayed. This is called the remote version.

Often Monticello can decide which version should be used based on the ancestry of the two versions. If not, this is called a conflict and elements with conflicts are displayed in bold. Whether done automatically by Monticello or manually by the developer, the version selected for use in the image is called the resolution.

The pane on the lower right displays the resolution of the selected element. The arrangment of the panes allows easy visual comparison of the resolution with both the local version to the left and the remote version above. The unlike the local version and the remote version, the resolution is editable. This means that the resolution can be different from both the local version and the remote version - a new version that combines and supercedes both of its parents.

Once a resolution has been selected, it can be applied to the image. Normally all the conflicts are first resolved, and then all the resolutions are they applied. But it's also possible to cherry pick just a few elements to apply.

See also the Merge Commands