On Mon, Aug 21, 2017 at 12:15:59AM +0530, Kaartic Sivaraam wrote:
> Hello all,
>
> I tried to do a 'git blame' on a file and wanted to see the blame
> before a particular revision of that file. I initially didn't know that
> you could achieve that with,
>
> $ git blame <rev> <file>
>
> I thought I need to pass the revision as a parameter so I tried (before
> looking into the documentation) the command found in the subject. It
> worked but to my surprise it had the same result as,
>
> $ git blame -- <file>
>
> I was confused and came to know from the documentation that blame
> doesn't have any '--before' option. That was even more surprising. Why
> does blame accept an option which it doesn't identify? Shouldn't it
> have warned that it doesn't accept the '--before' option? I guess it
> should not accept it because it confuses the user a lot as the could
> make it hard time for him to identify the issue.
>
> 'git blame' doesn't seem to be the only command that accepts options
> not specified in the documentation there's 'git show' for it's company,
>
> $ git show --grep 'regex'
>
> But the good thing with the above command is it behaves as expected. I
> suspect this should be documented, anyway.
>
> Thoughts ?
>
> --
> Kaartic
Git blame takes options that are fed to git rev-list, to limit the
commits being taken into account for blaming.
The man page shows "[--since=<date>]", which is one such option, but
before is valid as well.
git blame -h shows:
<rev-opts> are documented in git-rev-list(1)
and man git-blame shows under specifying ranges (emphasis mine):
When you are not interested in changes older than version v2.6.18,
or changes older than 3 weeks, *you can use revision range
specifiers similar to git rev-list*:
So these options are not documented under git blame, but git rev-list.
Perhaps the synopsis of man git-blame could be expanded so that that
it's clear it accepts rev-list options.
Kevin