On Thu, Aug 22, 2019 at 09:01:44AM -0700, Junio C Hamano wrote: > SZEDER Gábor <szeder.dev@xxxxxxxxx> writes: > > > Well, that fruit hung much lower than I though, just look at the size > > of the WIP patch below. I just hope that there are no unexpected > > surprises, but FWIW it produces the exact same output for all files up > > to 't/t5515' in v2.23.0 as the previous patch. > > > > Can't wait to see how it fares with that evil Windows path :) > > > > --- >8 --- > > > > Subject: [PATCH 3/2] WIP line-log: stop diff-ing after first TREESAME merge parent > > A quick question. That we need "stop diffing after first treesame" > patch in the first place means we have always been attempting to > follow all the parents of a merge? To follow, no. But there are two subsequent loops: the first loop computed the diffs between the merge and each of its parents, while the second processed those diffs, and returned as soon as it found a treesame parent, without following the others. This patch unified those two loops so it computes the diff with the first parent, and then processes that diff right away, and returns if treesame, thereby avoding diffing the remaining parents. > I'd expect that to happen when > "--full-history" was given to "git log -L..." invocation. Oh, right, I didn't consider '--full-history'. In that case it should not stop at the first parent. Hmm, looking into this, it seems that line-level log doesn't work with '--full-history' to begin with: # Each commit does what the subject says. $ git log --oneline --graph * f9bf557 (HEAD -> master) Merge branch 'branch' |\ | * 1b573fb (branch) Revert "Modify file" | * 3634cf3 Modify file |/ * 8842c18 Add file $ git log --oneline file 8842c18 Add file $ git log --oneline --full-history file 1b573fb (branch) Revert "Modify file" 3634cf3 Modify file 8842c18 Add file $ ~/src/git/BUILDS/v2.23.0/bin/git log -L1:file --oneline --no-patch 8842c18 Add file $ ~/src/git/BUILDS/v2.23.0/bin/git log -L1:file --oneline --no-patch --full-history 8842c18 Add file