* Find successor of common ancestor @ 2010-07-16 8:29 Enrico Weigelt 2010-07-16 8:49 ` Santi Béjar 2010-07-16 15:44 ` Avery Pennarun 0 siblings, 2 replies; 7+ messages in thread From: Enrico Weigelt @ 2010-07-16 8:29 UTC (permalink / raw) To: git 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). For this I need to find out the successor commit A (along the A' history line). Does anyone know how to do that ? cu -- ---------------------------------------------------------------------- Enrico Weigelt, metux IT service -- http://www.metux.de/ phone: +49 36207 519931 email: weigelt@metux.de mobile: +49 151 27565287 icq: 210169427 skype: nekrad666 ---------------------------------------------------------------------- Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme ---------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 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 15:44 ` Avery Pennarun 1 sibling, 1 reply; 7+ messages in thread From: Santi Béjar @ 2010-07-16 8:49 UTC (permalink / raw) To: weigelt; +Cc: git 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' HTH, Santi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 2010-07-16 8:49 ` Santi Béjar @ 2010-07-16 9:06 ` Enrico Weigelt 2010-07-16 12:19 ` Johan Herland 2010-07-16 12:29 ` Andreas Schwab 0 siblings, 2 replies; 7+ messages in thread From: Enrico Weigelt @ 2010-07-16 9:06 UTC (permalink / raw) To: git * 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. cu -- ---------------------------------------------------------------------- Enrico Weigelt, metux IT service -- http://www.metux.de/ phone: +49 36207 519931 email: weigelt@metux.de mobile: +49 151 27565287 icq: 210169427 skype: nekrad666 ---------------------------------------------------------------------- Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme ---------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 2010-07-16 9:06 ` Enrico Weigelt @ 2010-07-16 12:19 ` Johan Herland 2010-07-16 15:35 ` Enrico Weigelt 2010-07-16 12:29 ` Andreas Schwab 1 sibling, 1 reply; 7+ messages in thread From: Johan Herland @ 2010-07-16 12:19 UTC (permalink / raw) To: weigelt; +Cc: git 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 2010-07-16 12:19 ` Johan Herland @ 2010-07-16 15:35 ` Enrico Weigelt 0 siblings, 0 replies; 7+ messages in thread From: Enrico Weigelt @ 2010-07-16 15:35 UTC (permalink / raw) To: git * Johan Herland <johan@herland.net> wrote: > 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. If the branches go off too far, you can easily end up in a lot of unresolvable conflicts, while on zip-rebase, there's great chance that 3way-merge will catch this. > 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 Thx, I'll have a try :) cu -- ---------------------------------------------------------------------- Enrico Weigelt, metux IT service -- http://www.metux.de/ phone: +49 36207 519931 email: weigelt@metux.de mobile: +49 151 27565287 icq: 210169427 skype: nekrad666 ---------------------------------------------------------------------- Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme ---------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 2010-07-16 9:06 ` Enrico Weigelt 2010-07-16 12:19 ` Johan Herland @ 2010-07-16 12:29 ` Andreas Schwab 1 sibling, 0 replies; 7+ messages in thread From: Andreas Schwab @ 2010-07-16 12:29 UTC (permalink / raw) To: weigelt; +Cc: git Enrico Weigelt <weigelt@metux.de> writes: > * 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. git rev-list [--first-parent] A..A' | tac | while read rev; do git rebase $rev; done Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Find successor of common ancestor 2010-07-16 8:29 Find successor of common ancestor Enrico Weigelt 2010-07-16 8:49 ` Santi Béjar @ 2010-07-16 15:44 ` Avery Pennarun 1 sibling, 0 replies; 7+ messages in thread From: Avery Pennarun @ 2010-07-16 15:44 UTC (permalink / raw) To: weigelt; +Cc: git On Fri, Jul 16, 2010 at 4:29 AM, Enrico Weigelt <weigelt@metux.de> wrote: > 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). You haven't *really* explained what you want to do here, but that doesn't really effect the answer to your actual question... > For this I need to find out the successor commit A (along the A' > history line). Does anyone know how to do that ? git rev-list --first-parent --reverse $(git merge-base A B)..A Have fun, Avery ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2010-07-16 15:45 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 2010-07-16 15:35 ` Enrico Weigelt 2010-07-16 12:29 ` Andreas Schwab 2010-07-16 15:44 ` Avery Pennarun
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).