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