Cross-project merges

Lluís xscript at gmx.net
Mon Jun 21 19:43:23 BST 2010


Hello there.

I'm in the need of prediodically merging a project (CEDET [1], which I'm
migrating to bazaar), into a subdirectory of a larger project (Emacs).

What a subversion-centric developer like me would do in this case is to declare
the CEDET subdirectory as an external dependency to a specific branch in the
CEDET repository, but my understanding is that this is not possible with bazaar.

Then, after looking through the plugin list, I've found that merge-into [2]
seems to provide the functionality of merging a repository into a subdirectory
of another one. Unfortunately, it does not work with repositories using the 2a
format [3], which is the case at hand.

After some discussion at the emacs-devel list, the proposed branch layout is:

emacs
|- trunk
|- branch1
...
`- branchN

cedet
|- trunk
|- branch1
...
|- branchM
|- emacs-trunk
|- emacs-branch1
...
`- emacs-branchN

Where CEDET's emacs-<whatever> branches are to be one-way merged into the
respective <whatever> branch in Emacs, and with the help of the 'merge-into'
plugin it seems that commit history would be nicely preserved.

The idea is to be able to gracefully handle three types of cases:
  * Ignore some changesets, such that they are never merged unless manual action
    is taken (e.g., for XEmacs-specific changes).
    
    Still don't know how to do that. In subversion you could edit the
    'svn:mergeinfo' property, such that it would be "blacklisted" for future
    merges, without being effectively merged.

  * Temporarily postpone the merge of specific changesets.

    This should be accomplished by not merging specific revisions into the
    respective CEDET's emacs-<whatever> branches, although I don't know how to
    selectively merge changesets among branches of the same project.

  * Periodic merge of proofread changes from CEDET's emacs-<whatever> into
    Emacs' <whathever> branches.

    Here's where I think the 'merge-into' plugin would be helpful.

Questions are then:
  * Would you recommend this or other strategies?

  * In case it would help the stated needs, is anybody with the necessary
    knowledge willing to fix the plugin to work with the 2a format? I tried to
    hack a fix for it, but I couldn't find a quick workaround for the second
    line using the unexisting '_byid' attribute.


Thanks a lot!
       Lluis

Footnotes: 
[1]  http://cedet.sf.net

[2]  http://doc.bazaar.canonical.com/plugins/en/merge-into-plugin.html

[3]  https://bugs.launchpad.net/bzr-merge-into/+bug/486245

-- 
 "And it's much the same thing with knowledge, for whenever you learn
 something new, the whole world becomes that much richer."
 -- The Princess of Pure Reason, as told by Norton Juster in The Phantom
 Tollbooth



More information about the bazaar mailing list