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

Re: [PATCH v6 09/10] replace: check mergetags when using --graft

From
Christian Couder <chriscool@tuxfamily.org>
Date
Jul 8, 2014, 05:35 UTC
Message-ID
<20140708.073501.2265697032770915844.chriscool@tuxfamily.org>
In-Reply-To
<xmqqion8by82.fsf@gitster.dls.corp.google.com>
From: Junio C Hamano <gitster@pobox.com>
Show 21 quoted lines
>
> Christian Couder <chriscool@tuxfamily.org> writes:
> 
>> When using --graft, with a mergetag in the original
>> commit, we should check that the commit pointed to by
>> the mergetag is still a parent of then new commit we
>> create, otherwise the mergetag could be misleading.
>>
>> If the commit pointed to by the mergetag is no more
>> a parent of the new commit, we could remove the
>> mergetag, but in this case there is a good chance
>> that the title or other elements of the commit might
>> also be misleading. So let's just error out and
>> suggest to use --edit instead on the commit.
> 
> I do not quite understand the reasoning.  If you have a merge you
> earlier made with a signed tag, and then want to redo the merge with
> an updated tip of that branch (perhaps the side branch was earlier
> based on maint but now was rebased on master), it will perfectly be
> normal to expect that the title or other elements of the resulting
> merge to stay the same.  

Yeah, but then you might also want to have a mergetag for the updated tip of the branch and --graft will not put it in the new commit, so it would be better to use --edit in this case.

> Why is it a good idea to error it out?

Because sometimes, in complex cases, it is misleading to do as if you can do the right thing, when there is a good chance you cannot.

Show 5 quoted lines
> If the argument were '"replace --graft" that changes the parents is
> likely to affect merge summary message, so error out and suggest to
> use --edit instead', regardless of the 'mergetag', I'd understand
> it, but that would essentially mean that 'replace --graft' should
> never be used, so...

I think that when "replace --graft" is used on a regular commit there is much better chance that the resulting replacement commit will be as the user expect it to be.

Thanks, Christian.

Previous: Junio C HamanoNext: Christian Couder
Message 25 of 26 in “Add --graft option to git replace”
  1. 00/10 Add --graft option to git replaceChristian Couder, Jul 7, 2014
  2. 01/10 replace: cleanup redirection style in testsChristian Couder, Jul 7, 2014
  3. 02/10 replace: add --graft optionChristian Couder, Jul 7, 2014
  4. Junio C HamanoJul 9, 2014
  5. Christian CouderJul 10, 2014
  6. Junio C HamanoJul 10, 2014
  7. Junio C HamanoJul 10, 2014
  8. Christian CouderJul 11, 2014
  9. Junio C HamanoJul 11, 2014
  10. Christian CouderJul 11, 2014
  11. Junio C HamanoJul 11, 2014
  12. Jeff KingJul 11, 2014
  13. 03/10 replace: add test for --graftChristian Couder, Jul 7, 2014
  14. Junio C HamanoJul 7, 2014
  15. Christian CouderJul 8, 2014
  16. 04/10 Documentation: replace: add --graft optionChristian Couder, Jul 7, 2014
  17. 05/10 contrib: add convert-grafts-to-replace-refs.shChristian Couder, Jul 7, 2014
  18. 06/10 replace: remove signature when using --graftChristian Couder, Jul 7, 2014
  19. 07/10 replace: add test for --graft with signed commitChristian Couder, Jul 7, 2014
  20. 08/10 commit: add for_each_mergetag()Christian Couder, Jul 7, 2014
  21. Junio C HamanoJul 7, 2014
  22. Christian CouderJul 8, 2014
  23. 09/10 replace: check mergetags when using --graftChristian Couder, Jul 7, 2014
  24. Junio C HamanoJul 7, 2014
  25. Christian CouderJul 8, 2014
  26. 10/10 replace: add test for --graft with a mergetagChristian Couder, Jul 7, 2014

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.