From: Johan Herland <johan@herland.net>
To: skillzero@gmail.com
Cc: git@vger.kernel.org, John Wiegley <johnw@boostpro.com>
Subject: Re: Using Origin hashes to improve rebase behavior
Date: Fri, 11 Feb 2011 12:40:29 +0100 [thread overview]
Message-ID: <201102111240.29746.johan@herland.net> (raw)
In-Reply-To: <AANLkTikrVPCr92XHirn1u=73eM--T190V-7nbE6fo8ng@mail.gmail.com>
On Friday 11 February 2011, skillzero@gmail.com wrote:
> On Thu, Feb 10, 2011 at 1:13 PM, John Wiegley <johnw@boostpro.com> wrote:
> > a b c 3' d e* f
> > o---o---o---o---o---o---o
> > \
> > o---o---o---o
> > 1 2 3 4
> >
> > At a later date, I want to rebase the private branch onto master. What
> > will happen is that the changes in 3 will conflict with the rewritten
> > changes in e*. However, I'd like Git to know that 3 was already
> > incorporated at some earlier time, and *not consider it during the
> > rebase*, since it doesn't need to.
>
> I don't know very much about how git really works so what I'm saying
> may be dumb, but rather than record where a commit came from, would it
> be reasonable for rebase to look at the patch-id for each change on
> the topic branch after the merge base and automatically remove topic
> branch commits that match that patch-id? So in your example, rebase
> would check each topic branch commit against 3', d, e*, and f and see
> that the 3' patch-id is the same as the topic branch 3 and remove
> topic branch 3 before it gets to e*?
I believe "git rebase" already does exactly what you describe [1].
However, comparing patch-ids stops working when the cherry-pick (3 -> 3')
has conflicts. IINM, it is the conflicting cases that John is interested in
solving...
...Johan
[1]: I tested the above scenario, and got no conflicts:
$ git init
$ FOO=a && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=b && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=c && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ git checkout -b topic
$ FOO=1 && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=2 && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=3 && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=4 && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ git checkout master
$ git cherry-pick topic^
$ FOO=d && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ echo e >> 3 && git add 3
$ FOO=e && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ FOO=f && echo $FOO > $FOO && git add $FOO && git commit -m $FOO
$ git checkout topic
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: 1
Applying: 2
Applying: 4
$ # Look, no conflicts.
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2011-02-11 11:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-10 21:13 Using Origin hashes to improve rebase behavior John Wiegley
2011-02-10 22:16 ` Johan Herland
2011-02-10 22:54 ` Jeff King
2011-02-11 3:14 ` John Wiegley
2011-02-11 4:45 ` Jeff King
2011-02-11 5:26 ` John Wiegley
2011-02-12 14:36 ` Thomas Rast
2011-02-11 10:02 ` skillzero
2011-02-11 11:40 ` Johan Herland [this message]
2011-02-11 19:03 ` Jeff King
2011-02-11 19:32 ` Junio C Hamano
2011-02-11 19:45 ` Jeff King
2011-02-20 17:49 ` Enrico Weigelt
2011-02-21 23:49 ` Dave Abrahams
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201102111240.29746.johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=johnw@boostpro.com \
--cc=skillzero@gmail.com \
/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.
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).