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

Re: Heads up: rebase -i -p will be made sane again

From
Stephen Haberman <stephen@exigencecorp.com>
Date
Jan 28, 2009, 03:39 UTC
Message-ID
<20090127213950.3596ecf9.stephen@exigencecorp.com>
In-Reply-To
<alpine.DEB.1.00.0901280225240.3586@pacific.mpi-cbg.de>
Show 13 quoted lines
> Actually, I misread t3410 a great deal.  The situation is as follows:
> 
>     ... UPSTREAM
>            \
> ... A - B - C -D
> 
> A is a patch the upstream does not have, B is a patch UPSTREAM has,
> and "git diff C^!" (i.e. the diff of C to its first parent) is _also_ 
> identical to a diff of a merge that is in UPSTREAM.
> 
> Basically, t3410 tests that after "git rebase -i -p UPSTREAM" and leaving 
> the rebase script as-is, essentially, A and D are cherry-picked on top of 
> UPSTREAM.

Cool--I "knew" that, but could not have articulated the case as succinctly.

Show 7 quoted lines
> > Does this mean you're just getting rid of the code that calls "rev list 
> > --cherry-pick"?
> 
> Only now do I understand.
> 
> I misread the code for --cherry-pick.  For merges, it adds the diff to the 
> first parent!

Ah, so that is how --cherry-pick works--I'd never looked into the patch-id stuff before. Makes sense, both of how it is leveraged by rev-list --cherry-pick and also that it doesn't make sense to only be against the first parent of merges.

> So I adapted my code to find the "dropped" merges in
> git-rebase--interactive, too, for now, but I guess the proper fix is
> something like this:

So, if C, as a merge commit, doesn't get a patch id anymore (right?), does that mean that C is included with A and D in the cherry-picking on top of UPSTREAM (because with no patch id it cannot be recognized as a duplicate)? So then C' is an empty-commit? This would be fine, I think, or can you detect that C is a noop somehow without patch ids?

Thanks, Stephen

Previous: Johannes SchindelinNext: Johannes Schindelin
Message 28 of 30 in “Heads up: rebase -i -p will be made sane again”
  1. Johannes SchindelinJan 27, 2009
  2. Stephen HabermanJan 27, 2009
  3. 0/6 Simplifications of some 'rebase' testsJohannes Schindelin, Jan 27, 2009
  4. 1/6 t3404 & t3411: undo copy&pasteJohannes Schindelin, Jan 27, 2009
  5. Junio C HamanoJan 27, 2009
  6. Johannes SchindelinJan 27, 2009
  7. Junio C HamanoJan 27, 2009
  8. Johannes SchindelinJan 27, 2009
  9. 0/6 rebase simplificationsJohannes Schindelin, Jan 27, 2009
  10. Junio C HamanoJan 27, 2009
  11. Johannes SchindelinJan 27, 2009
  12. 1/6 t3404 & t3411: undo copy&pasteJohannes Schindelin, Jan 27, 2009
  13. 2/6 lib-rebase.sh: Document what set_fake_editor() doesJohannes Schindelin, Jan 27, 2009
  14. 3/6 test-lib.sh: introduce test_commit() and test_merge() helpersJohannes Schindelin, Jan 27, 2009
  15. 4/6 Simplify t3410Johannes Schindelin, Jan 27, 2009
  16. 5/6 Simplify t3411Johannes Schindelin, Jan 27, 2009
  17. 6/6 Simplify t3412Johannes Schindelin, Jan 27, 2009
  18. 2/6 lib-rebase.sh: Document what set_fake_editor() doesJohannes Schindelin, Jan 27, 2009
  19. Junio C HamanoJan 27, 2009
  20. Johannes SchindelinJan 27, 2009
  21. 3/6 lib-rebase.sh: introduce test_commit() and test_merge() helpersJohannes Schindelin, Jan 27, 2009
  22. Junio C HamanoJan 27, 2009
  23. 4/6 Simplify t3410Johannes Schindelin, Jan 27, 2009
  24. 5/6 Simplify t3411Johannes Schindelin, Jan 27, 2009
  25. 6/6 Simplify t3412Johannes Schindelin, Jan 27, 2009
  26. Johannes SchindelinJan 27, 2009
  27. Johannes SchindelinJan 28, 2009
  28. Stephen HabermanJan 28, 2009
  29. Johannes SchindelinJan 28, 2009
  30. Stephen HabermanJan 28, 2009

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.