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

Re: breakage in revision traversal with pathspec

From
Jonathan Nieder <jrnieder@gmail.com>
Date
Sep 11, 2013, 18:24 UTC
Message-ID
<20130911182444.GD4326@google.com>
In-Reply-To
<5230AD23.2050009@bracey.fi>
Kevin Bracey wrote:
Show 10 quoted lines
> On reflection I'm not sure what we should for the "simple history"
> view of v1.8.3.1..v1.8.4. We're not rewriting parents, so we don't
> get a chance to reconsider the merge as being zero-parent, and we do
> have this little section of graph to traverse at the bottom:
>
>           1.8.3
>             o----x----x----x----x---x---     (x = included, o = excluded, *=!treesame)
>                 /
>                /*
>   o--x--x--x--x
[...]
Show 6 quoted lines
> 1) if identical to any on-graph parent, follow that one, and rewrite
> the merge as a non-merge. We currently do not follow to an identical
> off-graph parent. This long-standing comment in try_to_simplify_commit
> applies: "Even if a merge with an uninteresting side branch brought
> the entire change we are interested in, we do not want to lose the
> other branches of this merge, so we just keep going."
[...]
Show 6 quoted lines
> 2) If rule 1 doesn't activate, and it remains as a merge, hide it if
> treesame to all on-graph parents. Previously this rule was "hide if
> treesame to any parent", and so that would have hidden the merge.
>
> Now, when I changed rule 2, I did not think this would affect the
> default log. See my commit message:
[...]
> I currently feel instinctively more disposed to dropping the older
> "don't follow off-graph identical parents" rule. Let the default
> history go straight to v1.8.3 even though it goes off the graph,
> stopping us traversing the topic branch.
Thanks for this analysis.  Interesting.
The rule (1) comes from v1.3.0-rc1~13^2~6:
	commit f3219fbbba32b5100430c17468524b776eb869d6
	Author: Junio C Hamano <junkio@cox.net>
	Date:   Fri Mar 10 21:59:37 2006 -0800
	    try_to_simplify_commit(): do not skip inspecting tree change at boundary.
	    
	    When git-rev-list (and git-log) collapsed ancestry chain to
	    commits that touch specified paths, we failed to inspect and
	    notice tree changes when we are about to hit uninteresting
	    parent.  This resulted in "git rev-list since.. -- file" to
	    always show the child commit after the lower bound, even if it
	    does not touch the file.  This commit fixes it.
	    
	    Thanks for Catalin for reporting this.
	    
	    See also:
		461cf59f8924f174d7a0dcc3d77f576d93ed29a4
	    
	    Signed-off-by: Junio C Hamano <junkio@cox.net>

I think you're right that dropping the "don't follow off-graph treesame parents" rule would be a sensible change. The usual point of the "follow the treesame parent" rule is to avoid drawing undue attention to merges of ancient history where some of the parents are side-branches with an old version of the files being tracked and did not actually change those files. That rationale applies just as much for a merge on top of an UNINTERESTING rev as any other merge.

Thanks, Jonathan

Previous: Kevin BraceyNext: Junio C Hamano
Message 5 of 14 in “breakage in revision traversal with pathspec”
  1. Junio C HamanoSep 10, 2013
  2. Kevin BraceySep 10, 2013
  3. Junio C HamanoSep 10, 2013
  4. Kevin BraceySep 11, 2013
  5. Jonathan NiederSep 11, 2013
  6. Junio C HamanoSep 11, 2013
  7. Kevin BraceySep 11, 2013
  8. Junio C HamanoSep 11, 2013
  9. Junio C HamanoSep 19, 2013
  10. Jeff KingSep 20, 2013
  11. Junio C HamanoSep 20, 2013
  12. Jeff KingSep 20, 2013
  13. Junio C HamanoSep 20, 2013
  14. Jeff KingSep 25, 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.