]> git.ipfire.org Git - thirdparty/git.git/commit - submodule.c
rev-parse: --show-superproject-working-tree should work during a merge
authorSam McKelvie <sammck@gmail.com>
Thu, 27 Sep 2018 18:10:54 +0000 (11:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 28 Sep 2018 21:22:42 +0000 (14:22 -0700)
commitc5cbb27cb5f0a94ac5d0882778a00add829ad9d9
tree422fe7e5f0eee9f0795587f56018ae7c9a013a21
parentfc54c1af3ec09bab8b8ea09768c2da4069b7f53e
rev-parse: --show-superproject-working-tree should work during a merge

Invoking 'git rev-parse --show-superproject-working-tree' exits with

    "fatal: BUG: returned path string doesn't match cwd?"

when the superproject has an unmerged entry for the current submodule,
instead of displaying the superproject's working tree.

The problem is due to the fact that when a merge of the submodule reference
is in progress, "git ls-files --stage —full-name <submodule-relative-path>”
returns three seperate entries for the submodule (one for each stage) rather
than a single entry; e.g.,

  $ git ls-files --stage --full-name submodule-child-test
  160000 dbbd2766fa330fa741ea59bb38689fcc2d283ac5 1       submodule-child-test
  160000 f174d1dbfe863a59692c3bdae730a36f2a788c51 2       submodule-child-test
  160000 e6178f3a58b958543952e12824aa2106d560f21d 3       submodule-child-test

The code in get_superproject_working_tree() expected exactly one entry to
be returned; this patch makes it use the first entry if multiple entries
are returned.

Test t1500-rev-parse is extended to cover this case.

Signed-off-by: Sam McKelvie <sammck@gmail.com>
Reviewed-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
t/t1500-rev-parse.sh