git_path(): handle `.lock` files correctly
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Mon, 28 Oct 2019 12:57:18 +0000 (12:57 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 29 Oct 2019 03:38:36 +0000 (12:38 +0900)
commit76a53d640f72fc77e7e9358dfeb5df5ece56515f
tree7a3817c9fc72729404874281fe11e7e48649f4e0
parent3ce47211a6ecae0ebe241779ef7112ee21f04a74
git_path(): handle `.lock` files correctly

Ever since worktrees were introduced, the `git_path()` function _really_
needed to be called e.g. to get at the path to `logs/HEAD` (`HEAD` is
specific to the worktree, and therefore so is its reflog). However, the
wrong path is returned for `logs/HEAD.lock`.

This does not matter as long as the Git executable is doing the asking,
as the path for that `logs/HEAD.lock` file is constructed from
`git_path("logs/HEAD")` by appending the `.lock` suffix.

However, Git GUI just learned to use `--git-path` instead of appending
relative paths to what `git rev-parse --git-dir` returns (and as a
consequence not only using the correct hooks directory, but also using
the correct paths in worktrees other than the main one). While it does
not seem as if Git GUI in particular is asking for `logs/HEAD.lock`,
let's be safe rather than sorry.

Side note: Git GUI _does_ ask for `index.lock`, but that is already
resolved correctly, due to `update_common_dir()` preferring to leave
unknown paths in the (worktree-specific) git directory.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
path.c
t/t0060-path-utils.sh