diff options
| -rw-r--r-- | MERGE.txt | 60 |
1 files changed, 59 insertions, 1 deletions
@@ -1,3 +1,61 @@ +Process +======= + +In order to try to accurately reflect the fork and then re-merge of the +projects, the merge process brought both code trees together into one +repository and grafted the Distribute fork onto the Setuptools development +line (as if it had been created as a branch in the first place). + +The rebase to get distribute onto setuptools went something like this:: + + hg phase -d -f -r 26b4c29b62db + hg rebase -s 26b4c29b62db -d 7a5cf59c78d7 + +The technique required a late version of mercurial (2.5) to work correctly. + +The only code that was included was the code that was ancestral to the public +releases of Distribute 0.6. Additionally, because Setuptools was not hosted +on Mercurial at the time of the fork and because the Distribute fork did not +include a complete conversion of the Setuptools history, the Distribute +changesets had to be re-applied to a new, different conversion of the +Setuptools SVN repository. As a result, all of the hashes have changed. + +Distribute was grafted in a 'distribute' branch and the 'setuptools-0.6' +branch was targeted for the merge. The 'setuptools' branch remains with +unreleased code and may be incorporated in the future. + +Reconciling Differences +======================= + +There were both technical and philosophical differences between Setuptools +and Distribute. To reconcile these differences in a manageable way, the +following technique was undertaken: + +In the 'distribute' branch, first remove code that is no longer relevant to +setuptools (such as the setuptools patching code). + +Next, in the 'distribute' branch, at the point where the fork occurred (such +that the code is still essentially pristine setuptools), copy changes for a +single file or small group of files from a late revision of that file in the +'setuptools-0.6' branch (1aae1efe5733 was used) and commit those changes. This +step creates a new head. That head is then merged. It is in this Mercurial +merge operation that the fundamental differences between Distribute and +Setuptools are reconciled, but since only a single file or small set of files +are used, the scope is limited. + +Finally, once all files have been reconciled and merged, the tip of the +'distribute' branch represents the merged code. It is then merged with the +'setuptools-0.6' branch, deferring to the 'distribute' branch:: + + hg update null + hg merge 1aae1efe5733 + hg ci -m "New beginning in a default branch" + hg merge distribute --tool internal:other + hg ci -m "Merge with Distribute" + +Concessions +=========== + With the merge of Setuptools and Distribute, the following concessions were made: @@ -22,7 +80,7 @@ Minor Changes Distribute-based script launchers are used and they launch Python as a subprocess, rather than loading the Python DLL in-process. -Differences from Distribute 0.6.35: +Differences from Distribute 0.6.36: Major Changes ------------- |
