]> git.ipfire.org Git - thirdparty/git.git/commit
blame: default to HEAD in a bare repo when no start commit is given
authorSZEDER Gábor <szeder.dev@gmail.com>
Sun, 7 Apr 2019 23:43:27 +0000 (01:43 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 8 Apr 2019 08:02:26 +0000 (17:02 +0900)
commita544fb08f8bfa3a9a566d436e5e81dd30fb21c4c
tree45dc10e153304923ded034801bb892bc02f6c45f
parentaeb582a98374c094361cba1bd756dc6307432c42
blame: default to HEAD in a bare repo when no start commit is given

When 'git blame' is invoked without specifying the commit to start
blaming from, it starts from the given file's state in the work tree.
However, when invoked in a bare repository without a start commit,
then there is no work tree state to start from, and it dies with the
following error message:

  $ git rev-parse --is-bare-repository
  true
  $ git blame file.c
  fatal: this operation must be run in a work tree

This is misleading, because it implies that 'git blame' doesn't work
in bare repositories at all, but it does, in fact, work just fine when
it is given a commit to start from.

We could improve the error message, of course, but let's just default
to HEAD in a bare repository instead, as most likely that is what the
user wanted anyway (if they wanted to start from an other commit, then
they would have specified that in the first place).

'git annotate' is just a thin wrapper around 'git blame', so in the
same situation it printed the same misleading error message, and this
patch fixes it, too.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/blame.c
t/annotate-tests.sh