On Fri, Jun 1, 2018 at 7:08 AM, Christian Couder
<[email protected]> wrote:
> test_expect_success "multi-fetch works off a 'clean' repository" '
> - rm -rf "$GIT_DIR/svn" "$GIT_DIR/refs/remotes" &&
> + rm -rf "$GIT_DIR/svn" &&
> + git for-each-ref --format="option no-deref%0adelete %(refname)"
> refs/remotes |
> + git update-ref --stdin &&
Is that "option no-deref" really necessary when deleting refs? Does
it have any effect at all?
The synopsis in 'git update-ref's manpage indicates that '--no-deref'
is only applicable when updating a ref, but not when deleting one;
though the usage shown by 'git update-ref -h' doesn't indicate this.
Anyway, it appears that when deleting refs no symref dereferencing is
performed and '--no-deref' is simply ignored:
$ git branch one
$ git branch two
$ git symbolic-ref ONE refs/heads/one
$ git symbolic-ref TWO refs/heads/two
$ cat .git/{ONE,TWO}
ref: refs/heads/one
ref: refs/heads/two
$ git update-ref -d ONE
$ git update-ref --no-deref -d TWO
$ cat .git/{ONE,TWO}
cat: .git/ONE: No such file or directory
cat: .git/TWO: No such file or directory
$ git for-each-ref
95c5b8654fd75df13ed29f43cff52287414c3877 commit refs/heads/master
95c5b8654fd75df13ed29f43cff52287414c3877 commit refs/heads/one
95c5b8654fd75df13ed29f43cff52287414c3877 commit refs/heads/two