]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'jc/symbolic-ref-no-recurse'
authorJunio C Hamano <gitster@pobox.com>
Fri, 21 Oct 2022 18:37:28 +0000 (11:37 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Oct 2022 18:37:28 +0000 (11:37 -0700)
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.

* jc/symbolic-ref-no-recurse:
  symbolic-ref: teach "--[no-]recurse" option

1  2 
builtin/symbolic-ref.c
t/t1401-symbolic-ref.sh

Simple merge
index 0c204089b83595bc516e9c26416cd67191d3c083,773a6e8e01677a5ff289c5cafbf78b73a1910b70..d708acdb819536083cc0f8bc5e41d2196d90aee3
@@@ -165,14 -163,18 +165,28 @@@ test_expect_success 'symbolic-ref can r
        test_cmp expect actual
  '
  
 +test_expect_success 'symbolic-ref refuses invalid target for non-HEAD' '
 +      test_must_fail git symbolic-ref refs/heads/invalid foo..bar
 +'
 +
 +test_expect_success 'symbolic-ref allows top-level target for non-HEAD' '
 +      git symbolic-ref refs/heads/top-level FETCH_HEAD &&
 +      git update-ref FETCH_HEAD HEAD &&
 +      test_cmp_rev top-level HEAD
 +'
 +
+ test_expect_success 'symbolic-ref pointing at another' '
+       git update-ref refs/heads/maint-2.37 HEAD &&
+       git symbolic-ref refs/heads/maint refs/heads/maint-2.37 &&
+       git checkout maint &&
+       git symbolic-ref HEAD >actual &&
+       echo refs/heads/maint-2.37 >expect &&
+       test_cmp expect actual &&
+       git symbolic-ref --no-recurse HEAD >actual &&
+       echo refs/heads/maint >expect &&
+       test_cmp expect actual
+ '
  test_done