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

Re: [PATCH] merge-tree.c: add --merge-base=<commit> option

From
Elijah Newren <newren@gmail.com>
Date
Oct 29, 2022, 01:52 UTC
Message-ID
<CABPp-BGXM=iRAgjNbZ0o3FSjj583GpkuFB6emUYwWjdFWb9-jQ@mail.gmail.com>
In-Reply-To
<xmqqfsf8j5p5.fsf@gitster.g>
On Fri, Oct 28, 2022 at 9:03 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 13 quoted lines
>
> > Yeah, I don't think that'd be too hard...if we could rule out ever
> > supporting octopus merges in merge-tree (which I'm not so sure is a
> > good assumption).  Otherwise, we might need to figure out the
> > appropriate backward-compatible input parsing (and output format
> > changes?)
>
> I'd prefer an approach to tackle one thing at a time while making
> sure we leave the door open for the future ones.  I think the
> backend interface from "merge" to external strategies use a
> separator to signal the boundary between the heads being merged
> (i.e. branchN above) and the bases being used, which is easy to
> parse and support multiple bases and octopus at the same time.
Ooh, the separator idea sounds like a good solution.
Show 14 quoted lines
> As to making it easy to implement "cherry-pick", I do not think you
> should dogmatically forbid it on the basis for merge-tree from the
> command line is inherently one mergy operation per invocation.  You
> will have the --stdin interface, and a way forward may be a notation
> to refer to previous results in the --stdin input stream.  That way,
> a single invocation of merge-tree "server" can be fed a sequence of
> 3-way merges that are actually steps of multi-commit cherry-pick,
> that merge the differences of multiple commits on top of the
> previous result, one step at a time.
>
> IOW, as long as you make sure --stdin interface is rich enough to
> allow you do what people would do a sequence of "git merge-tree"
> single shot invocations (perhaps even driven by a script), you would
> be OK, I would think.

I agree that this kind of functionality probably makes sense for inclusion from a completeness perspective, but I still maintain that if its sole purpose is implementing a cherry-pick command then it's at best an ill-advised or interim hack and we should instead do something better. While combining this patch with --stdin does solve the "single operation per invocation" issue, that's only one of six issues I listed in my email to Kyle about why this is the wrong base for building a cherry-pick alternative.

Previous: Junio C HamanoNext: kylezhao (赵柯宇)
Message 5 of 43 in “merge-tree.c: add --merge-base=<commit> option”
  1. merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Oct 27, 2022
  2. Junio C HamanoOct 27, 2022
  3. Elijah NewrenOct 28, 2022
  4. Junio C HamanoOct 28, 2022
  5. Elijah NewrenOct 29, 2022
  6. kylezhao (赵柯宇)Oct 28, 2022
  7. Elijah NewrenOct 28, 2022
  8. kylezhao (赵柯宇)Oct 28, 2022
  9. merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Oct 28, 2022
  10. Elijah NewrenOct 29, 2022
  11. merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Oct 29, 2022
  12. Elijah NewrenNov 1, 2022
  13. 0/2 merge-tree: allow specifying a base commit when --write-tree is passedKyle Zhao via GitGitGadget, Nov 1, 2022
  14. 2/2 merge-tree.c: support --merge-base in conjunction with --stdinKyle Zhao via GitGitGadget, Nov 1, 2022
  15. Elijah NewrenNov 3, 2022
  16. kylezhao (赵柯宇)Nov 3, 2022
  17. 1/2 merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Nov 1, 2022
  18. Taylor BlauNov 1, 2022
  19. 0/2 merge-tree: allow specifying a base commit when --write-tree is passedKyle Zhao via GitGitGadget, Nov 3, 2022
  20. 1/2 merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Nov 3, 2022
  21. Ævar Arnfjörð BjarmasonNov 3, 2022
  22. kylezhao (赵柯宇)Nov 3, 2022
  23. 2/2 merge-tree.c: allow specifying the merge-base when --stdin is passedKyle Zhao via GitGitGadget, Nov 3, 2022
  24. 0/2 merge-tree: allow specifying a base commit when --write-tree is passedKyle Zhao via GitGitGadget, Nov 3, 2022
  25. 1/2 merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Nov 3, 2022
  26. 2/2 merge-tree.c: allow specifying the merge-base when --stdin is passedKyle Zhao via GitGitGadget, Nov 3, 2022
  27. Elijah NewrenNov 11, 2022
  28. 0/2 merge-tree: allow specifying a base commit when --write-tree is passedKyle Zhao via GitGitGadget, Nov 11, 2022
  29. 1/2 merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Nov 11, 2022
  30. Junio C HamanoNov 22, 2022
  31. kylezhao (赵柯宇)Nov 22, 2022
  32. Junio C HamanoNov 22, 2022
  33. Junio C HamanoNov 22, 2022
  34. kylezhao (赵柯宇)Nov 22, 2022
  35. 2/2 merge-tree.c: allow specifying the merge-base when --stdin is passedKyle Zhao via GitGitGadget, Nov 11, 2022
  36. Elijah NewrenNov 12, 2022
  37. Taylor BlauNov 13, 2022
  38. Taylor BlauNov 13, 2022
  39. 0/3 merge-tree: allow specifying a base commit when --write-tree is passedKyle Zhao via GitGitGadget, Nov 24, 2022
  40. 1/3 merge-tree.c: add --merge-base=<commit> optionKyle Zhao via GitGitGadget, Nov 24, 2022
  41. 2/3 merge-tree.c: allow specifying the merge-base when --stdin is passedKyle Zhao via GitGitGadget, Nov 24, 2022
  42. 3/3 docs: fix description of the `--merge-base` optionKyle Zhao via GitGitGadget, Nov 24, 2022
  43. Junio C HamanoNov 25, 2022

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.