git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* synchronizing 2 heterogenous branches by cherry-pick
@ 2009-07-21 12:42 Martin Pirker
  2009-07-23  8:41 ` Martin Pirker
  0 siblings, 1 reply; 4+ messages in thread
From: Martin Pirker @ 2009-07-21 12:42 UTC (permalink / raw)
  To: git

One of those weird real-world situations, advice appreciated:

Given...
one Git repository with
one branch "left" and one branch "right"
both branches have a different history (common ancestor is 0000000)
both branches have different content
_however_, at one specific commit in the "left" and "right"
branch it can be said that the content of specific
subdirectories is identical
these commits are marked with a tag "equal"

Thus, patches which only modify the identical
content can always be applied without conflicts on both branches.
I commit a new patch on "left", I can cherry-pick it to
"right" and both trees are identical again.

Issues:
Cheery-pick takes only one commit.
I have to find commits by hand.
Ideally, I want to specify equal..HEAD, if 10 commits are "left"
and "right" are 7, well, then cherry pick the last 3 from "left"
to "right".
Note that the patch content is always identical, the
commit text message (author/committer/timestamp/...) not
always
Note that ideally only one way synchronizing occurs. Bonus
points if I can add on both sides and then start magic sync...


Any good idea on how to automagically script these cherry-picking?

Martin

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

* Re: synchronizing 2 heterogenous branches by cherry-pick
  2009-07-21 12:42 synchronizing 2 heterogenous branches by cherry-pick Martin Pirker
@ 2009-07-23  8:41 ` Martin Pirker
  2009-07-23  8:51   ` Pierre Habouzit
  0 siblings, 1 reply; 4+ messages in thread
From: Martin Pirker @ 2009-07-23  8:41 UTC (permalink / raw)
  To: git

I'm replying to myself.... for the archives :-)

On Tue, Jul 21, 2009 at 2:42 PM, Martin Pirker<git.collector@gmail.com> wrote:
[....]
>Any good idea on how to automagically script these cherry-picking?

tag identical content point in different branches:
 git tag tag1 commitx
 git tag tag2 commity

get list of newer commits:
 git rev-list tag1^..head1
 git rev-list tag2^..head2

compare content of commits via:
git diff --exit-code commit1 commit2

...and cherry-pick resulting list from one side to the other


Git is an amazing toolbox :-)
Martin

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

* Re: synchronizing 2 heterogenous branches by cherry-pick
  2009-07-23  8:41 ` Martin Pirker
@ 2009-07-23  8:51   ` Pierre Habouzit
  2009-07-23  9:24     ` Martin Pirker
  0 siblings, 1 reply; 4+ messages in thread
From: Pierre Habouzit @ 2009-07-23  8:51 UTC (permalink / raw)
  To: Martin Pirker; +Cc: git

On Thu, Jul 23, 2009 at 10:41:37AM +0200, Martin Pirker wrote:
> I'm replying to myself.... for the archives :-)
> 
> On Tue, Jul 21, 2009 at 2:42 PM, Martin Pirker<git.collector@gmail.com> wrote:
> [....]
> >Any good idea on how to automagically script these cherry-picking?
> 
> tag identical content point in different branches:
>  git tag tag1 commitx
>  git tag tag2 commity
> 
> get list of newer commits:
>  git rev-list tag1^..head1
>  git rev-list tag2^..head2
> 
> compare content of commits via:
> git diff --exit-code commit1 commit2
> 
> ....and cherry-pick resulting list from one side to the other

Or use git cherry
-- 
Intersec <http://www.intersec.com>
Pierre Habouzit <pierre.habouzit@intersec.com>
Tél : +33 (0)1 5570 3346
Mob : +33 (0)6 1636 8131
Fax : +33 (0)1 5570 3332
37 Rue Pierre Lhomme
92400 Courbevoie

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

* Re: synchronizing 2 heterogenous branches by cherry-pick
  2009-07-23  8:51   ` Pierre Habouzit
@ 2009-07-23  9:24     ` Martin Pirker
  0 siblings, 0 replies; 4+ messages in thread
From: Martin Pirker @ 2009-07-23  9:24 UTC (permalink / raw)
  To: Pierre Habouzit; +Cc: git

On Thu, Jul 23, 2009 at 10:51 AM, Pierre Habouzit<madcoder@madism.org> wrote:
> Or use git cherry

I tried, but I was under the impression git patch-id also hashes the commit
message - or I got something else typed wrong 'cause it didn't seem to work
:-/

You are right, the solution is:
 git cherry head1 head2 tag2
 git cherry head2 head1 tag1
and cherry-pick all lines prefixed with + to the other branch.

Thanks,
Martin

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

end of thread, other threads:[~2009-07-23  9:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-21 12:42 synchronizing 2 heterogenous branches by cherry-pick Martin Pirker
2009-07-23  8:41 ` Martin Pirker
2009-07-23  8:51   ` Pierre Habouzit
2009-07-23  9:24     ` Martin Pirker

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 NNTP newsgroup(s).