You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The git-blame(1) man page says that the .. range specifier can be used
to exclude changes "older than" a certain revision. It goes on to say
that it collapses all lines "not changed since the range boundary" into
the boundary revision. This is the same thing --since=<rev-date> would
do, and the man page even uses .. and --since in parallel as if to imply
that they're alternative means of achieving the same output.
In fact, this isn't true! On the git-rev-list(1) and gitrevisions(7) man
pages, it's explained that the .. specifier excludes all ancestors of
the commit, not all commits on an earlier date. 'blame' is not an
exception to this behavior; it uses the same functions as other commands
to parse a specifier and build a revision set.
If you execute:
----
#!/bin/sh
mkdir blame-test
pushd blame-test
git init
echo "line added at root" > foo
echo "another line added at root" >> foo
git add foo
git commit -am "#1 chronologically"
git checkout -b side
sed '2i\
line added only on side branch
' foo > bar
mv bar foo
git commit -am "#2 chronologically"
git checkout master
echo "line added only on master branch" >> foo
git commit -am "#3 chronologically"
git tag boundary
git merge side -m "#4 chronologically"
git blame boundary.. foo
popd blame-test
----
then you'll see that 'blame' treats the range specifier as 'rev-list'
would: the second line is attributed to a commit which occured
chronologically before `boundary`.
(I guess a case could be made for an off-kilter interpretation of the
phrasing, under which "since the range boundary" includes any commits
not yet known to that boundary. But that would contradict the use of
"since" as the name of the other limiting option, which *does* perform
an absolute time cutoff.)
There is at least one porcelain in fairly wide use which takes this
passage of the manual at its word, so I'm not the only one who finds it
confusing. I think the phrasing in the following patch is both clearer
and more accurate.
Signed-off-by: Daniel Koning <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
0 commit comments