emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Keeping changes in sync with upstream projects


From: Lluís
Subject: Keeping changes in sync with upstream projects
Date: Tue, 18 May 2010 20:05:55 +0200
User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.7 Emacs/24.0.50 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)

This is something that I've wanted to ask since quite a long time, and now that
CEDET 1.0 seems to be closer, it is time to think of a solution.

So, the problem:

Emacs ships with code from other relatively large projects that have their own
upstream repositories.

Synchronizing emacs upstream to/from those project's upstream should be as
automated as possible (i.e., it is not desirable to diff emacs' version with
upstream's and integrate changes manually).


High-level requirement:

Sync back and forth emacs' upstream with project's on a per-project basis.


Specific requirements:

         * Sync an emacs subtree with project's upstream (assuming such projects
           have a subtree of their own on emacs upstream)
         * Keep track (on one or both sides of) of "remote" changesets:
                * merged
                * discarded
                * temporally hold (cherrypicking)


I think this would cover most aspects of cross-project syncing, and after
talking with Eric (some time ago), there is no problem for CEDET to switch from
its current CVS into another VCS.

My question is, which VCS should be used and how in order to facilitate merges
between emacs and this kind of projects (CEDET, in this case)? Because, frankly,
I had a real bad time manually merging changes from emacs trunk into CEDET :)


If I remember well, bazaar has no support for subtree merging nor changeset
cherrypicking, although I might well be completely wrong.


Any ideas on how to ease it?

I can think of tagging "local" changesets with references to "remote"
changesets, but this would need some specialized tools.

For example, if Emacs were in subversion, and the project to sync was in its own
subtree, I could add three properties to the root of the subtree (svn propedit):
         * remote repository URI
         * merged changesets
         * discarded changesets
         * hold changesets

Then a script can be written to check all changesets on the remote repository
that are not listed on any of the other three properties, meaning that they are
pending for merge.


Thanks,
        Lluis

-- 
 "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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]