Re: How to manage merges from one line while excluding its merges from another

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

 



Hi Lane,

Lane Brooks wrote:

> I have a tree like this:
> 
>      G---H---I---J---K   devel
>     /       /       /
> A---B---C---D---E---F    main
>         \
>          L---M---N---O   my

Nice diagram.

What is missing is a picture of what you want the result to be.

> The 'my' branch forked off the 'main' line and for reasons out of my
> control cannot merge the 'main' changes (D,E,F) back.
[...]
> I want to continue to merge from the devel line as additional commits
> are made that are not on the main branch, but I do not want any of
> the future merge commits.

(I) I am guessing that the 'main' line is not part of the published
history, in which case you what you want might look like this:

         ... devel
      /
 A---B---C- ... main
          \
           L---M---N---O---H'---J' my

The J commit itself could not be included in the history of the 'my'
branch because its ancestor D is not meant to be published.

(II) In an alternative scenario, the 'main' changes (D, E, F) are
forbidden because they introduce bugs.  In this case, a solution might
look something like this:

       ...                  K devel
     /               /       \
A---B---C---D---E---F main    \
         \                     \
          L---M---N---O---------P---Q---R---S

where Q, R, and S are commits (created with ‘git revert’) that
undo the effect of F, E, and D.  From then on, you can just merge
from devel as usual.

> Is there an automated way to do this or do I have to cherry pick
> everything by hand?

In git 1.7.2, you will be able to automate (I) as follows:

 git cherry-pick --no-merges ^my ^main devel

Until then, you might want to try experimenting with something
like this:

 git rev-list --no-merges ^my ^main devel |
 while read rev
 do
	git cherry-pick $rev ||
	{
		echo >&2 cherry-pick failed
		break
	}
 done

Hope that helps,
Jonathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]