This gets rid of the special casing code for pseudorefs in refs.c This is in preparation for reftable. v4 * Address problems on case-insensitive file systems reported by Dscho. Han-Wen Nienhuys (3): t1400: use git rev-parse for testing PSEUDOREF existence Modify pseudo refs through ref backend storage Make HEAD a PSEUDOREF rather than PER_WORKTREE. Documentation/git-update-ref.txt | 13 ++-- refs.c | 127 +++---------------------------- t/t1400-update-ref.sh | 30 ++++---- t/t1405-main-ref-store.sh | 5 +- 4 files changed, 36 insertions(+), 139 deletions(-) base-commit: 5c06d60fc55d2213c089f63c282468080f812686 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-673%2Fhanwen%2Fpseudoref-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-673/hanwen/pseudoref-v4 Pull-Request: https://github.com/gitgitgadget/git/pull/673 Range-diff vs v3: 1: 28bd3534d0 = 1: b5274d9053 t1400: use git rev-parse for testing PSEUDOREF existence 2: 79cd5dd480 ! 2: ba5f1b4d26 Modify pseudo refs through ref backend storage @@ t/t1405-main-ref-store.sh: test_expect_success 'create_symref(FOO, refs/heads/ma test_expect_success 'delete_refs(FOO, refs/tags/new-tag)' ' git rev-parse FOO -- && git rev-parse refs/tags/new-tag -- && +- $RUN delete-refs 0 nothing FOO refs/tags/new-tag && + m=$(git rev-parse master) && - $RUN delete-refs 0 nothing FOO refs/tags/new-tag && ++ REF_NO_DEREF=1 && ++ $RUN delete-refs $REF_NO_DEREF nothing FOO refs/tags/new-tag && ++ test_must_fail git rev-parse --symbolic-full-name FOO && test_must_fail git rev-parse FOO -- && -- test_must_fail git rev-parse refs/tags/new-tag -- -+ test_must_fail git rev-parse refs/tags/new-tag --&& -+ test_must_fail git rev-parse master -- && -+ git update-ref refs/heads/master $m + test_must_fail git rev-parse refs/tags/new-tag -- ' - - test_expect_success 'rename_refs(master, new-master)' ' 3: 3ab9f2f04e = 3: 358d34df07 Make HEAD a PSEUDOREF rather than PER_WORKTREE. -- gitgitgadget