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.