git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johan Herland <johan@herland.net>
To: weigelt@metux.de
Cc: git@vger.kernel.org
Subject: Re: Find successor of common ancestor
Date: Fri, 16 Jul 2010 14:19:39 +0200	[thread overview]
Message-ID: <201007161419.39469.johan@herland.net> (raw)
In-Reply-To: <20100716090613.GB22894@nibiru.local>

On Friday 16 July 2010, Enrico Weigelt wrote:
> * Santi Béjar <santi@agolina.net> wrote:
> > On Fri, Jul 16, 2010 at 10:29 AM, Enrico Weigelt <weigelt@metux.de> 
wrote:
> > > Hi folks,
> > >
> > >
> > > suppose the following situation:
> > >
> > > I've forked some branch A into B, now A and B have evolved
> > > independently for quite some time into A' and B'. Now I'd like
> > > to rebase B' along A' history line step by step - first on A+1,
> > > then A+3, ... until A' (that's what I'd call zip-rebase).
> >
> > This is just what "git rebase"  does:
> >
> > $ git checkout B'
> > $ git rebase A'
>
> Yes, but I need to find out A+1 for my zip-rebase.

IINM you have the following situation

A0---A1---A2---A3---A4  <-- A'
  \
   B1---B2---B3--B4  <-- B'

...and you want to rebase B' (i.e. B1 through B4), first onto A1, then 
onto A2, the onto A3, and finally onto A4. I have no idea WHY you would 
want to do this (rebasing directly onto A4 (like Santi suggests) is 
much cheaper), but you can certainly coax Git into doing it, anyway.

To list commits A1, A2, A3, A4 (in that order), do:

  git rev-list --reverse B'..A'

You can now loop over the results like this:

  git checkout B'
  for a in $(git rev-list --reverse ..A'); do
      git rebase $a
  done


Hope this helps,

...Johan

-- 
Johan Herland, <johan@herland.net>
www.herland.net

  reply	other threads:[~2010-07-16 12:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-16  8:29 Find successor of common ancestor Enrico Weigelt
2010-07-16  8:49 ` Santi Béjar
2010-07-16  9:06   ` Enrico Weigelt
2010-07-16 12:19     ` Johan Herland [this message]
2010-07-16 15:35       ` Enrico Weigelt
2010-07-16 12:29     ` Andreas Schwab
2010-07-16 15:44 ` Avery Pennarun

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=201007161419.39469.johan@herland.net \
    --to=johan@herland.net \
    --cc=git@vger.kernel.org \
    --cc=weigelt@metux.de \
    /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).