Squeak SmalltalkJoker Squeak Smalltalk : Tools Tricks Usage : prevnext Monticello Backport Merge Parallel Branches

The system records the fact that this new version was backported from 
a later version, and will make use of that information when merging.  
For example, if you backport some changes in version C to its ancestor 
A, making a backported version B, and you then make some new changes 
to B and save that as B', then when merging B' into C, only the 
difference between B and B' will be considered.  One possible scenario 
this enables is the following:

The "maintainer" has a mainline branch. The "contributor" sends the 
maintainer a version with two different changes, X and Y. The 
maintainer only wants to integrate change X, and asks the contributor 
to separate it out. The contributor backports change X to a released 
version, and sends this backport to the maintainer. The maintainer 
merges the backport into the mainline, and later release a new 
version. The contributor should be able to merge this new release into 
their branch, without:

- losing change Y
- having any conflicts to do with change X

In other words, it's possible to keep two parallel branches, and 
repeatedly but selectively merge between them, without seeing any 
spurious conflicts or unexpected removals.

At various points there have been requests that when merging versions, 
you be able to select only some of the changes to merge.  You can use 
the Backport facility to do this as follows:

- load the version you want to merge some of the changes from
- backport those changes to the common ancestor with the version you 
  want to merge into
- save this backported version
- load your version, and merge in the backport