This fixes another embarassing bug in 4/6 and adds tests to make sure it works. Changes since v3 -- 8< -- diff --git a/path.c b/path.c index 32d4ca6..a346134 100644 --- a/path.c +++ b/path.c @@ -439,7 +439,7 @@ const char *enter_repo(const char *path, int strict) path = validated_path; } else { - const char *gitfile = read_gitfile(used_path); + const char *gitfile = read_gitfile(path); if (gitfile) path = gitfile; if (chdir(path)) diff --git a/t/t0002-gitfile.sh b/t/t0002-gitfile.sh index 9393322..9670e8c 100755 --- a/t/t0002-gitfile.sh +++ b/t/t0002-gitfile.sh @@ -116,4 +116,46 @@ test_expect_success 'setup_git_dir twice in subdir' ' ) ' +test_expect_success 'enter_repo non-strict mode' ' + test_create_repo enter_repo && + ( + cd enter_repo && + test_tick && + test_commit foo && + mv .git .realgit && + echo "gitdir: .realgit" >.git + ) && + git ls-remote enter_repo >actual && + cat >expected <<-\EOF && + 946e985ab20de757ca5b872b16d64e92ff3803a9 HEAD + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/heads/master + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/tags/foo + EOF + test_cmp expected actual +' + +test_expect_success 'enter_repo linked checkout' ' + ( + cd enter_repo && + git worktree add ../foo refs/tags/foo + ) && + git ls-remote foo >actual && + cat >expected <<-\EOF && + 946e985ab20de757ca5b872b16d64e92ff3803a9 HEAD + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/heads/master + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/tags/foo + EOF + test_cmp expected actual +' + +test_expect_success 'enter_repo strict mode' ' + git ls-remote --upload-pack="git upload-pack --strict" foo/.git >actual && + cat >expected <<-\EOF && + 946e985ab20de757ca5b872b16d64e92ff3803a9 HEAD + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/heads/master + 946e985ab20de757ca5b872b16d64e92ff3803a9 refs/tags/foo + EOF + test_cmp expected actual +' + test_done -- 8< -- Nguyễn Thái Ngọc Duy (6): path.c: delete an extra space t0002: add test for enter_repo(), non-strict mode enter_repo: avoid duplicating logic, use is_git_directory() instead enter_repo: allow .git files in strict mode clone: allow --local from a linked checkout clone: better error when --reference is a linked checkout builtin/clone.c | 13 ++++++++++--- path.c | 14 +++++++++----- t/t0002-gitfile.sh | 42 ++++++++++++++++++++++++++++++++++++++++++ t/t2025-worktree-add.sh | 5 +++++ 4 files changed, 66 insertions(+), 8 deletions(-) -- 2.3.0.rc1.137.g477eb31 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html