diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2015-09-28 20:06:13 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-09-28 10:46:22 -0700 |
commit | 0f64cc407f32f979c8bcfa7d3d9b24d8e023df35 (patch) | |
tree | 62deb9f13bd3ba946fc56d3f8a0b0abea320203f | |
parent | t0002: add test for enter_repo(), non-strict mode (diff) | |
download | tgif-0f64cc407f32f979c8bcfa7d3d9b24d8e023df35.tar.xz |
enter_repo: avoid duplicating logic, use is_git_directory() instead
It matters for linked checkouts where 'refs' directory won't be
available in $GIT_DIR. is_git_directory() knows about $GIT_COMMON_DIR
and can handle this case.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | path.c | 3 | ||||
-rwxr-xr-x | t/t0002-gitfile.sh | 14 |
2 files changed, 15 insertions, 2 deletions
@@ -441,8 +441,7 @@ const char *enter_repo(const char *path, int strict) else if (chdir(path)) return NULL; - if (access("objects", X_OK) == 0 && access("refs", X_OK) == 0 && - validate_headref("HEAD") == 0) { + if (is_git_directory(".")) { set_git_dir("."); check_repository_format(); return path; diff --git a/t/t0002-gitfile.sh b/t/t0002-gitfile.sh index 545bfe2982..2e709cc969 100755 --- a/t/t0002-gitfile.sh +++ b/t/t0002-gitfile.sh @@ -134,4 +134,18 @@ test_expect_success 'enter_repo non-strict mode' ' 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_done |