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

RE: [Internet]Re: [PATCH v7 1/2] merge-tree.c: add --merge-base=<commit> option

From
kylezhao (赵柯宇) <kylezhao@tencent.com>
Date
Nov 22, 2022, 03:52 UTC
Message-ID
<3e5cdd224d76499bbddf55b0b649439b@tencent.com>
In-Reply-To
<xmqqsfibsn9o.fsf@gitster.g>
Show 25 quoted lines
> > +	const char *merge_base = NULL;
> >
> >  	const char * const merge_tree_usage[] = {
> >  		N_("git merge-tree [--write-tree] [<options>] <branch1>
> > <branch2>"), @@ -515,6 +533,10 @@ int cmd_merge_tree(int argc, const
> char **argv, const char *prefix)
> >  			   &o.use_stdin,
> >  			   N_("perform multiple merges, one per line of input"),
> >  			   PARSE_OPT_NONEG),
> > +		OPT_STRING(0, "merge-base",
> > +			   &merge_base,
> > +			   N_("commit"),
> > +			   N_("specify a merge-base for the merge")),
> >  		OPT_END()
> >  	};
> 
> This looks wrong, though.
> 
> Shouldn't "git merge-tree --merge-base=X --merge-base=Y A B"
> allow you to compute the merge between A and B in a history where there are
> two merge bases?
> 
> Unfortunately this is already in 'next', so let's see an incremental fix on top.
> 
> Thanks.
I agree.

OPT_STRING only use the last value of "--merge-base". It will mislead users, they may specify the merge-base multiple times, but found it doesn't work.

I went to check the api-parse-option.txt, but I didn't found an elegant solution to stop when the users uses the
second "--merge-base".  Did I miss it? Or we just need to mention this in the git-merge-tree.txt,
such as:
 --merge-base=<commit>::
 	Instead of finding the merge-bases for <branch1> and <branch2>,
-	specify a merge-base for the merge.
+            specify a merge-base for the merge. This option doesn't support
+            being specified multiple times, only the last value you provide will be used.

Thanks, Kyle

Previous: Junio C HamanoNext: Junio C Hamano
Message 31 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.