[PATCH 1/1] worktree refs: fix case sensitivity for 'head'
From: Michael Rappazzo via GitGitGadget <hidden>
Date: 2018-12-13 19:54:15
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Michael Rappazzo <redacted> On a worktree which is not the primary, using the symbolic-ref 'head' was incorrectly pointing to the main worktree's HEAD. The same was true for any other case of the word 'Head'. Signed-off-by: Michael Rappazzo <redacted> --- refs.c | 8 ++++---- t/t1415-worktree-refs.sh | 9 +++++++++ 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/refs.c b/refs.c
index f9936355cd..963e786458 100644
--- a/refs.c
+++ b/refs.c@@ -579,7 +579,7 @@ int expand_ref(const char *str, int len, struct object_id *oid, char **ref) *ref = xstrdup(r); if (!warn_ambiguous_refs) break; - } else if ((flag & REF_ISSYMREF) && strcmp(fullref.buf, "HEAD")) { + } else if ((flag & REF_ISSYMREF) && strcasecmp(fullref.buf, "HEAD")) { warning(_("ignoring dangling symref %s"), fullref.buf); } else if ((flag & REF_ISBROKEN) && strchr(fullref.buf, '/')) { warning(_("ignoring broken ref %s"), fullref.buf);
@@ -627,7 +627,7 @@ int dwim_log(const char *str, int len, struct object_id *oid, char **log) static int is_per_worktree_ref(const char *refname) { - return !strcmp(refname, "HEAD") || + return !strcasecmp(refname, "HEAD") || starts_with(refname, "refs/worktree/") || starts_with(refname, "refs/bisect/") || starts_with(refname, "refs/rewritten/");
@@ -847,7 +847,7 @@ int should_autocreate_reflog(const char *refname) return starts_with(refname, "refs/heads/") || starts_with(refname, "refs/remotes/") || starts_with(refname, "refs/notes/") || - !strcmp(refname, "HEAD"); + !strcasecmp(refname, "HEAD"); default: return 0; }
@@ -855,7 +855,7 @@ int should_autocreate_reflog(const char *refname) int is_branch(const char *refname) { - return !strcmp(refname, "HEAD") || starts_with(refname, "refs/heads/"); + return !strcasecmp(refname, "HEAD") || starts_with(refname, "refs/heads/"); } struct read_ref_at_cb {
diff --git a/t/t1415-worktree-refs.sh b/t/t1415-worktree-refs.sh
index b664e51250..e7f8a129fd 100755
--- a/t/t1415-worktree-refs.sh
+++ b/t/t1415-worktree-refs.sh@@ -76,4 +76,13 @@ test_expect_success 'reflog of worktrees/xx/HEAD' ' test_cmp expected actual.wt2 ' +test_expect_success 'head, Head, and HEAD are the same in worktree' ' + test_cmp_rev worktree/foo initial && + git -C wt1 rev-parse HEAD >uc_ref.wt1 && + git -C wt1 rev-parse Head >mc_ref.wt1 && + git -C wt1 rev-parse head >lc_ref.wt1 && + test_cmp uc_ref.wt1 lc_ref.wt1 && + test_cmp uc_ref.wt1 mc_ref.wt1 +' + test_done
--
gitgitgadget