unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Lluís <xscript@gmx.net>
To: emacs-devel@gnu.org
Subject: Keeping changes in sync with upstream projects
Date: Tue, 18 May 2010 20:05:55 +0200	[thread overview]
Message-ID: <86zkzxccfw.wl%lluis@ginnungagap.pc.ac.upc.edu> (raw)

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	other threads:[~2010-05-18 18:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-18 18:05 Lluís [this message]
2010-05-18 20:55 ` Keeping changes in sync with upstream projects Stefan Monnier
2010-05-19 10:35   ` mathias
2010-05-19 13:45     ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86zkzxccfw.wl%lluis@ginnungagap.pc.ac.upc.edu \
    --to=xscript@gmx.net \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).