From: Andrew Wong <andrew.w@sohovfx.com>
To: Stephen Haberman <stephen@exigencecorp.com>
Cc: Junio C Hamano <gitster@pobox.com>,
Andrew Wong <andrew.kw.w@gmail.com>,
git@vger.kernel.org
Subject: Re: [PATCH] rebase -i -p: doesn't pick certain merge commits that are children of "upstream"
Date: Sat, 18 Jun 2011 02:40:35 -0400 [thread overview]
Message-ID: <4DFC4863.2090803@sohovfx.com> (raw)
In-Reply-To: <20110616172454.13ff1a18@sh9>
Here's a list of those commits in "git log"-order for easy reference:
80fe82e rebase-i-p: if todo was reordered use HEAD as the rewritten
parent
d80d6bc rebase-i-p: do not include non-first-parent commits touching
UPSTREAM
acc8559 rebase-i-p: only list commits that require rewriting in todo
a4f25e3 rebase-i-p: fix 'no squashing merges' tripping up non-merges
bb64507 rebase-i-p: delay saving current-commit to REWRITTEN if squashing
72583e6 rebase-i-p: use HEAD for updating the ref instead of mapping
OLDHEAD
42f939e rebase-i-p: test to exclude commits from todo based on its
parents
On 11-06-16 6:24 PM, Stephen Haberman wrote:
> Perhaps that is unreasonable with whatever you guys are looking at now,
> but, IIRC, the use case was that B1=some old commit, like a 2.0
> release, and a bunch of work happened on the C1 branch, it was merged
> in E1, but now when you want to rebase D1/E1/F1 on top of B1, you don't
> want all of the noise of the C1 commit(s), since when rewriting E1 into
> E2, you can just reuse the un-rewritten C1 as its 2nd parent.
In commit a4f25e3, we could already rebase B1 and squash F1 onto D1,
while reusing C1 and recreating the merge. That means we could already
pass t3411.2if we adjusted the todo-list to account for the extra "pick
C1" line.
> Well, and not just the noise--since the todo is still flat, if C1
> was listed in the todo, there's no way to recreate E2 as a merge and
> maintain the C1 commit(s) as a separate branch. I think C1 would get
> flattened between D2/E2, depending on where it was in the todo. You'd
> lose a merge, contrary to the -p flag. That sounds like the core issue
> that was being fixed
The merge shouldn't get flattened when the "-p" is used. As long as the
merge commit appears in the todo-list, git will trace the parents of the
merge commit, find the original or rewritten parents, and perform the
merge. Slightly off-topic, but I believe the branches will remain
intact as long as the branch commits remain in the same topo-order
relative to each other in the todo-list. i.e. git will be confused if we
try to move a commit from one branch into the other.
The "noise" is filtered out by by commit d80d6bc. However, I think we
should keep the commits from branch C1, since there could be a scenario
where we actually want to squash F1 onto C1 instead. That commit also
introduced a bug that Jeff King was running into: if we do "git rebase
-i -p C1", the todo-list becomes a "noop", which means HEAD is reset to
C1 and we lose the merge commit and F1.
So what I did in my patch is essentially revert the changes from
d80d6bc, and adjust t3411.2 to account for the extra "pick C1" line.
next prev parent reply other threads:[~2011-06-18 6:40 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-16 10:33 [BUG] rebase -p loses commits Jeff King
2011-05-16 19:42 ` Andrew Wong
2011-05-16 20:36 ` Junio C Hamano
2011-05-17 0:33 ` Andrew Wong
2011-05-17 0:54 ` Junio C Hamano
2011-05-17 1:02 ` Junio C Hamano
2011-05-17 5:44 ` Jeff King
2011-05-17 16:07 ` Andrew Wong
2011-05-17 16:12 ` Jeff King
2011-05-21 5:51 ` [RFC] Interactive-rebase doesn't pick all children of "upstream" Andrew Wong
2011-05-21 5:51 ` Andrew Wong
2011-05-21 7:34 ` Andrew Wong
2011-06-05 5:32 ` [PATCH] " Andrew Wong
2011-06-05 9:16 ` Johannes Sixt
2011-06-05 14:11 ` Andrew Wong
2011-06-07 4:08 ` [PATCH v2] rebase -i -p: doesn't pick certain merge commits that are " Andrew Wong
2011-06-07 4:08 ` [PATCH] " Andrew Wong
2011-06-12 16:28 ` Andrew Wong
2011-06-13 16:01 ` Junio C Hamano
2011-06-13 17:30 ` Andrew Wong
2011-06-16 22:24 ` Stephen Haberman
2011-06-18 6:40 ` Andrew Wong [this message]
2011-06-18 15:17 ` Stephen Haberman
2011-06-18 16:47 ` Andrew Wong
2011-06-18 17:12 ` Stephen Haberman
2011-06-18 22:12 ` [PATCH] rebase -i -p: include non-first-parent commits in todo list Andrew Wong
2011-06-18 22:13 ` [PATCH] rebase -i -p: doesn't pick certain merge commits that are children of "upstream" Andrew Wong
2011-05-17 5:39 ` [BUG] rebase -p loses commits Jeff King
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=4DFC4863.2090803@sohovfx.com \
--to=andrew.w@sohovfx.com \
--cc=andrew.kw.w@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=stephen@exigencecorp.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).