threads / patch / 48620

patcht9104: kosherly remove remote refs

Subject: [PATCH] t9104: kosherly remove remote refs

## tl;dr

4 messages between Jun 1, 2018 and Jun 2, 2018. Diffs are folded; open one to read it.

replies: 3people: 4as markdown or json

Christian Couder· Jun 1, 2018, 05:08 UTC · lore

As there are plans to implement other ref storage systems, let's use a way to remove remote refs that does not depend on refs being files.

This makes it clear to readers that this test does not depend on which ref backend is used.

Suggested-by: Michael Haggerty <mhagger@alum.mit.edu>
Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
This was suggested and discussed in:
https://public-inbox.org/git/20180525085906.GA2948@sigill.intra.peff.net/
 t/t9104-git-svn-follow-parent.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
Show changes to t/t9104-git-svn-follow-parent.sh +3 −1
diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
index 9c49b6c1fe..5e0ad19177 100755
--- a/t/t9104-git-svn-follow-parent.sh
+++ b/t/t9104-git-svn-follow-parent.sh
@@ -215,7 +215,9 @@ test_expect_success "multi-fetch continues to work" "
 	"
 
 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 &&
 	git reflog expire --all --expire=all &&
 	mkdir "$GIT_DIR/svn" &&
 	git svn multi-fetch
-- 
2.17.0.1035.g12039e008f
Johannes Schindelin· Jun 1, 2018, 11:25 UTC · re: Christian Couder · lore

Re: [PATCH] t9104: kosherly remove remote refs

Hi Chris,
On Fri, 1 Jun 2018, Christian Couder wrote:
Show 30 quoted lines
> As there are plans to implement other ref storage systems,
> let's use a way to remove remote refs that does not depend
> on refs being files.
> 
> This makes it clear to readers that this test does not
> depend on which ref backend is used.
> 
> Suggested-by: Michael Haggerty <mhagger@alum.mit.edu>
> Helped-by: Jeff King <peff@peff.net>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
> This was suggested and discussed in:
> 
> https://public-inbox.org/git/20180525085906.GA2948@sigill.intra.peff.net/
> 
>  t/t9104-git-svn-follow-parent.sh | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
> index 9c49b6c1fe..5e0ad19177 100755
> --- a/t/t9104-git-svn-follow-parent.sh
> +++ b/t/t9104-git-svn-follow-parent.sh
> @@ -215,7 +215,9 @@ test_expect_success "multi-fetch continues to work" "
>  	"
>  
>  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 &&

Apart from the line longer than our conventions allow, this looks fine to me!

Show 5 quoted lines
>  	git reflog expire --all --expire=all &&
>  	mkdir "$GIT_DIR/svn" &&
>  	git svn multi-fetch
> -- 
> 2.17.0.1035.g12039e008f
Please upgrade ;-)

Ciao, Dscho

Michael Haggerty· Jun 2, 2018, 09:43 UTC · re: Christian Couder · lore

Re: [PATCH] t9104: kosherly remove remote refs

On Fri, Jun 1, 2018 at 7:08 AM, Christian Couder <christian.couder@gmail.com> wrote:

Show 35 quoted lines
> As there are plans to implement other ref storage systems,
> let's use a way to remove remote refs that does not depend
> on refs being files.
>
> This makes it clear to readers that this test does not
> depend on which ref backend is used.
>
> Suggested-by: Michael Haggerty <mhagger@alum.mit.edu>
> Helped-by: Jeff King <peff@peff.net>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
> This was suggested and discussed in:
>
> https://public-inbox.org/git/20180525085906.GA2948@sigill.intra.peff.net/
>
>  t/t9104-git-svn-follow-parent.sh | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/t/t9104-git-svn-follow-parent.sh b/t/t9104-git-svn-follow-parent.sh
> index 9c49b6c1fe..5e0ad19177 100755
> --- a/t/t9104-git-svn-follow-parent.sh
> +++ b/t/t9104-git-svn-follow-parent.sh
> @@ -215,7 +215,9 @@ test_expect_success "multi-fetch continues to work" "
>         "
>
>  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 &&
>         git reflog expire --all --expire=all &&
>         mkdir "$GIT_DIR/svn" &&
>         git svn multi-fetch
> --
> 2.17.0.1035.g12039e008f
+1 LGTM.
Michael
SZEDER Gábor· Jun 2, 2018, 12:28 UTC · re: Christian Couder · lore

Re: [PATCH] t9104: kosherly remove remote refs

On Fri, Jun 1, 2018 at 7:08 AM, Christian Couder <christian.couder@gmail.com> wrote:

Show 5 quoted lines
>  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

← back to recent threads