unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Keeping changes in sync with upstream projects
@ 2010-05-18 18:05 Lluís
  2010-05-18 20:55 ` Stefan Monnier
  0 siblings, 1 reply; 4+ messages in thread
From: Lluís @ 2010-05-18 18:05 UTC (permalink / raw)
  To: emacs-devel

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



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-05-19 13:45 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-18 18:05 Keeping changes in sync with upstream projects Lluís
2010-05-18 20:55 ` Stefan Monnier
2010-05-19 10:35   ` mathias
2010-05-19 13:45     ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).