emacs-devel
[Top][All Lists]
Advanced

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

Re: Merging CEDET


From: Lluís
Subject: Re: Merging CEDET
Date: Sun, 03 Jun 2012 23:51:50 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)

David Engster writes:

> [Eric forgot to include emacs-devel in CC, which is why I'm quoting his
> message fully at the end.]

> Eric M. Ludlam writes:
>> On 06/02/2012 03:47 AM, Chong Yidong wrote:
>>> Hello CEDET folks,
>>> 
>>> Is the CEDET file-rename branch ready?  If so, now is a good time to
>>> start merging into Emacs.

>> From the perspective of content, the current trunk in CEDET bzr
>> matches up with CEDET 1.1 closely.

> To make things clear: I have merged our 'newtrunk' branch (which
> included the changes in 'file-rename') into our development trunk. This
> means we are now finally working directly with the new file and
> directory structure from Emacs, and most changes from Emacs trunk are
> now incorporated into CEDET.

The original idea was that 2 steps are still missing:

- Check which changes in emacs are still missing in cedet's 'file-rename'
  branch. When done, set that emacs revision in stone, as it will be the base
  for future merges from emacs to cedet.

- Emacs people should check the 'file-rename' branch to manually select any
  desired changes to integrate into Emacs. When done, set that cedet revision in
  stone, as it will be the base for future merges from cedet to emacs.

Now, David finished stabilizing 'file-rename' in 'newtrunk' (as it contained
lots of other changes that were also necessary but not interesting to emacs), so
I'm no longer sure if 'newtrunk' should be used instead, as it might contain
some changes from emacs that are not present in 'file-rename'.



> As I've already written some time ago, I've started to write a special
> package for merging Emacs<->CEDET. The most important goal is to keep
> the granularity of commits in both repositories. For this to work, we
> should get our work-flow straight before we start.

> My idea is the following and I'd like to hear opinions from the VCS
> gurus around here if this is the right approach:

>   We use three branches:

>     - CEDET trunk (in the following: 'cedet')
>     - Emacs trunk (in the following: 'emacs'). Of course, we do not
>       care for the full Emacs trunk, but only for the CEDET-related
>       files (essentially: lisp/cedet and lisp/emacs-lisp/eieio*).
>     - a special branch inside of CEDET upstream (in the following: 'merge')

>   The 'merge' branch is special in that it follows Emacs *and* CEDET
>   development. It is derived from the old 'file-rename' branch and thus
>   has a common history with 'cedet', so that we can do proper merges
>   from and to 'cedet'.

> The main concept is this:

>   - 'merge' follows 'emacs' as close as possible. That means:
>     - It must *not* have any files from 'cedet' which should not end
>       up in 'emacs'. Most importantly, this means that *everything*
>       that is in 'merge' must have signed papers.
>     - It follows exactly the Emacs directory structure, meaning that
>       EIEIO is in lisp/emacs-lisp.

>   - Syncing with 'cedet' happens through *merges*.

>   - Syncing with 'emacs' happens through *cherry picking*, which with
>     bzr just boils down to applying patches from "bzr diff -c
>     <revision>". Alternatively, Lluís "bzr transfer" plugin can be used,
>     but I couldn't get it to work. Either way, the special
>     CEDET-Emacs-merge package I've written is used to track which
>     commits have been merged and which not (and for what reason).

> I could think of two alternatives to this approach:

>   - Drop the special 'merge' branch and directly cherry-pick between the
>     two repositories, hence essentially do what org and Gnus are
>     currently doing. However, I think this can only work well if both
>     repositories are very similar, and CEDET upstream still contains
>     lots of stuff which isn't in Emacs.

>   - Use *two* merge branches 'to-emacs' and 'from-emacs', that means one
>     for each direction and both with a common history with 'cedet'.
>     This was actually the initial idea, but by now I think this approach
>     is just over-complicating things and could easily get pretty messy.

The initial workflow was (=> manual/scripted/whatever operation; -> regular
operation):

emacs/trunk => cedet/from-emacs

  This requires renaming some files in the process (I wrote "bzr transplant" for
  this specific case).

cedet/from-emacs -> cedet/trunk

  In principle, almost no changes should happen in emacs, so this would require
  almost no reviews.

cedet/trunk -> cedet/to-emacs

  Not all changes in cedet should immediately go to the next emacs version, so
  this would probably be based on cherry-picking.

cedet/to-emacs => emacs/trunk

  This requires renaming some files in the process, too (again, can be
  automated).

For the sake of completeness, if 'file-rename' were used to establish the
current synchronization point, under this scheme it would be branched twice as
cedet/{from,to}-emacs.


If I understood it correctly, you're proposing to unify branches
cedet/{from,to}-emacs. I just think it's less messier to have them separate.


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]