git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rebase -i -p: doesn't pick certain merge commits that are children of "upstream"

From
Stephen Haberman <stephen@exigencecorp.com>
Date
Jun 16, 2011, 22:24 UTC
Message-ID
<20110616172454.13ff1a18@sh9>
In-Reply-To
<4DF64932.1090607@sohovfx.com>
Hey,
> Ever since Jeff brought up this issue, I've been wondering what
> issue/workflow is that patch trying to fix.

I'm fairly sure the case the patch was fixing is t3411's "squash F1 into D1".

Where, starting with a tree like:

# A1 - B1 - D1 - E1 - F1 # \ / # -- C1 --

The user is on F1 and issues: "git rebase -i -p B1", the todo list is "D1, E1, F1" (no C1), and they choose "D1 squash F1, E1", the resulting tree should be:

# A1 - B1 - D2 - E2 # \ / # -- C1 --

And, the fix was that C1 should not be in the todo list.

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.

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 patch in question:
http://article.gmane.org/gmane.comp.version-control.git/98251

Did actually have a test (t3411) but it was still failing until the following commit:

http://article.gmane.org/gmane.comp.version-control.git/98253

Where the test changed from expect failure to expect success. I remember that looking odd at the time, but for some reason liked the commits being separate.

- Stephen
Previous: Andrew WongNext: Andrew Wong
Message 21 of 28 in “[BUG] rebase -p loses commits”
  1. Jeff KingMay 16, 2011
  2. Andrew WongMay 16, 2011
  3. Junio C HamanoMay 16, 2011
  4. Andrew WongMay 17, 2011
  5. Junio C HamanoMay 17, 2011
  6. Junio C HamanoMay 17, 2011
  7. Jeff KingMay 17, 2011
  8. Andrew WongMay 17, 2011
  9. Jeff KingMay 17, 2011
  10. [RFC] Interactive-rebase doesn't pick all children of "upstream"Andrew Wong, May 21, 2011
  11. [RFC] Interactive-rebase doesn't pick all children of "upstream"Andrew Wong, May 21, 2011
  12. Andrew WongMay 21, 2011
  13. Interactive-rebase doesn't pick all children of "upstream"Andrew Wong, Jun 5, 2011
  14. Johannes SixtJun 5, 2011
  15. Andrew WongJun 5, 2011
  16. rebase -i -p: doesn't pick certain merge commits that are children of "upstream"Andrew Wong, Jun 7, 2011
  17. rebase -i -p: doesn't pick certain merge commits that are children of "upstream"Andrew Wong, Jun 7, 2011
  18. Andrew WongJun 12, 2011
  19. Junio C HamanoJun 13, 2011
  20. Andrew WongJun 13, 2011
  21. Stephen HabermanJun 16, 2011
  22. Andrew WongJun 18, 2011
  23. Stephen HabermanJun 18, 2011
  24. Andrew WongJun 18, 2011
  25. Stephen HabermanJun 18, 2011
  26. rebase -i -p: include non-first-parent commits in todo listAndrew Wong, Jun 18, 2011
  27. Andrew WongJun 18, 2011
  28. Jeff KingMay 17, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.