The bug that bit me (hard!) and that triggered not only a long series of
curses but also my writing a patch and sending it to the list was that
`git rev-parse --git-path HEAD` would give *incorrect* output when run
in a subdirectory of a regular checkout, but *correct* output when run
in a subdirectory of an associated *worktree*.

I had tested the script in question quite a bit, but in a worktree. And
in production, it quietly did exactly the wrong thing.

Changes relative to v2:

- the "iffy" test in t1700 was made "uniffy"

- clarified in the commit message of 2/2 why we can get away with the
  "reset then use" pattern


Johannes Schindelin (1):
  rev-parse: fix several options when running in a subdirectory

Michael Rappazzo (1):
  rev-parse tests: add tests executed from a subdirectory

 builtin/rev-parse.c      | 15 +++++++++++----
 t/t1500-rev-parse.sh     | 28 ++++++++++++++++++++++++++++
 t/t1700-split-index.sh   | 16 ++++++++++++++++
 t/t2027-worktree-list.sh | 10 +++++++++-
 4 files changed, 64 insertions(+), 5 deletions(-)


base-commit: 076c05393a047247ea723896289b48d6549ed7d0
Published-As: https://github.com/dscho/git/releases/tag/git-path-in-subdir-v3
Fetch-It-Via: git fetch https://github.com/dscho/git git-path-in-subdir-v3

Interdiff vs v2:

 diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
 index 84af2802f6f..2cfd8d2aae4 100644
 --- a/builtin/rev-parse.c
 +++ b/builtin/rev-parse.c
 @@ -903,6 +903,7 @@ int cmd_rev_parse(int argc, const char **argv, const char 
*prefix)
                        continue;
                verify_filename(prefix, arg, 1);
        }
 +      strbuf_release(&buf);
        if (verify) {
                if (revs_count == 1) {
                        show_rev(type, sha1, name);
 @@ -912,6 +913,5 @@ int cmd_rev_parse(int argc, const char **argv, const char 
*prefix)
                die_no_single_rev(quiet);
        } else
                show_default();
 -      strbuf_release(&buf);
        return 0;
  }
 diff --git a/t/t1700-split-index.sh b/t/t1700-split-index.sh
 index 446ff34f966..6096f2c6309 100755
 --- a/t/t1700-split-index.sh
 +++ b/t/t1700-split-index.sh
 @@ -201,17 +201,16 @@ EOF
  '
  
  test_expect_success 'rev-parse --shared-index-path' '
 -      rm -rf .git &&
 -      test_create_repo . &&
 -      git update-index --split-index &&
 -      ls -t .git/sharedindex* | tail -n 1 >expect &&
 -      git rev-parse --shared-index-path >actual &&
 -      test_cmp expect actual &&
 -      mkdir work &&
 -      test_when_finished "rm -rf work" &&
 +      test_create_repo split-index &&
        (
 -              cd work &&
 -              ls -t ../.git/sharedindex* | tail -n 1 >expect &&
 +              cd split-index &&
 +              git update-index --split-index &&
 +              echo .git/sharedindex* >expect &&
 +              git rev-parse --shared-index-path >actual &&
 +              test_cmp expect actual &&
 +              mkdir subdirectory &&
 +              cd subdirectory &&
 +              echo ../.git/sharedindex* >expect &&
                git rev-parse --shared-index-path >actual &&
                test_cmp expect actual
        )

-- 
2.11.1.windows.1.2.g87ad093.dirty

Reply via email to