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

Re: [RFC/PATCH] Make --full-history consider more merges

From
Kevin Bracey <kevin@bracey.fi>
Date
Apr 25, 2013, 15:48 UTC
Message-ID
<5179505F.2000108@bracey.fi>
In-Reply-To
<7v61zb8j5d.fsf@alter.siamese.dyndns.org>
On 25/04/2013 04:59, Junio C Hamano wrote:
Show 11 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>>> So, given all that, revised patch below:
> I tried to squeeze the minimum test I sent $gmane/220919 to the test
> suite.  I think the "do not use --parents option for this test"
> switch needs to be cleaned up a bit more, but it fails without your
> patch and does pass with your patch.
>
> I somehow was hoping that your fix to TREESAME semantics would also
> correct the known breakage documented in that test, but it seems
> that I was too greedy ;-)

Thanks for the test addition. Maybe we will be able to satisfy your greed in this series. There could be more worth doing here, and I think getting TREESAME precise is key.

I think I do want to take the step of storing "treesame per parent". And once we do that, as well as avoiding the expensive re-diff, we have much richer information readily available as a simplification input (and output).

I'm working on a patch that does this - filling in an initial treesame[] array as a decoration in try_to_simplify_commit() is easy, and maintaining the array through later parent rewrites isn't as onerous as I feared - there are only a few places that rewrite parents after the initial scan. With a couple of helper functions to do things like "delete nth", I think it'll be quite tidy.

I believe that simplify_merges itself needs at least one addition, and could use the treesame[] array to do it: if after doing reduce_heads, a commit is now different to all remaining parents, but there was a TREESAME parent eliminated, that parent should be reinstated. That would clearly highlight missed merges, showing both that "older" TREESAME parent and the newer !TREESAME parent that would have been taken in a normal merge.

And maybe there's more simplify_merges could do, if it had this full TREESAME information available.

(But even after you do all this stuff to get the right commits out, we then hit a niggle of mine that gitk forces --cc diffs - even if it shows shows the offending merge commit, you can't get it to do a diff...)

Kevin
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 25 in “Locating merge that dropped a change”
  1. Kevin BraceyApr 9, 2013
  2. Kevin BraceyApr 11, 2013
  3. Junio C HamanoApr 11, 2013
  4. Make --full-history consider more mergesKevin Bracey, Apr 22, 2013
  5. Junio C HamanoApr 22, 2013
  6. Kevin BraceyApr 23, 2013
  7. Junio C HamanoApr 24, 2013
  8. Junio C HamanoApr 25, 2013
  9. Kevin BraceyApr 25, 2013
  10. Junio C HamanoApr 25, 2013
  11. Kevin BraceyApr 25, 2013
  12. Junio C HamanoApr 25, 2013
  13. Kevin BraceyApr 26, 2013
  14. 1/3 revision.c: tighten up TREESAME handling of mergesKevin Bracey, Apr 26, 2013
  15. 2/3 simplify-merges: never remove all TREESAME parentsKevin Bracey, Apr 26, 2013
  16. Junio C HamanoApr 27, 2013
  17. Kevin BraceyApr 28, 2013
  18. Junio C HamanoApr 28, 2013
  19. 3/3 simplify-merges: drop merge from irrelevant side branchKevin Bracey, Apr 26, 2013
  20. Junio C HamanoApr 27, 2013
  21. David AguilarApr 27, 2013
  22. Kevin BraceyApr 28, 2013
  23. Junio C HamanoApr 28, 2013
  24. Kevin BraceyApr 29, 2013
  25. Junio C HamanoApr 29, 2013

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.