summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MERGE.txt60
1 files changed, 59 insertions, 1 deletions
diff --git a/MERGE.txt b/MERGE.txt
index df2689f3..9cc94d3e 100644
--- a/MERGE.txt
+++ b/MERGE.txt
@@ -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
-------------