summaryrefslogtreecommitdiff
path: root/t/t3200-branch.sh
diff options
context:
space:
mode:
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>2007-07-10 18:50:44 +0100
committerJunio C Hamano <gitster@pobox.com>2007-07-11 16:03:58 -0700
commit6f084a56fcb3543d88d252bb49c1d2bbf2bd0cf3 (patch)
tree00a572bf2d745f3d55a0b00d29682fb779cd5b04 /t/t3200-branch.sh
parentb42f69273bf5ae2d5bb0c7479bfa9827e7b351ac (diff)
downloadgit-6f084a56fcb3543d88d252bb49c1d2bbf2bd0cf3.tar.gz
branch --track: code cleanup and saner handling of local branches
This patch cleans up some complicated code, and replaces it with a cleaner version, using code from remote.[ch], which got extended a little in the process. This also enables us to fix two cases: The earlier "fix" to setup tracking only when the original ref started with "refs/remotes" is wrong. You are absolutely allowed to use a separate layout for your tracking branches. The correct fix, of course, is to set up tracking information only when there is a matching remote.<nick>.fetch line containing a colon. Another corner case was not handled properly. If two remotes write to the original ref, just warn the user and do not set up tracking. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3200-branch.sh')
-rwxr-xr-xt/t3200-branch.sh21
1 files changed, 11 insertions, 10 deletions
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
index a19e961cb3..ef1eeb7d8a 100755
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -148,13 +148,14 @@ test_expect_success 'test tracking setup via config' \
test $(git config branch.my3.remote) = local &&
test $(git config branch.my3.merge) = refs/heads/master'
-test_expect_success 'autosetupmerge = all' '
+test_expect_success 'avoid ambiguous track' '
git config branch.autosetupmerge true &&
+ git config remote.ambi1.url = lalala &&
+ git config remote.ambi1.fetch = refs/heads/lalala:refs/heads/master &&
+ git config remote.ambi2.url = lilili &&
+ git config remote.ambi2.fetch = refs/heads/lilili:refs/heads/master &&
git branch all1 master &&
- test -z "$(git config branch.all1.merge)" &&
- git config branch.autosetupmerge all &&
- git branch all2 master &&
- test $(git config branch.all2.merge) = refs/heads/master
+ test -z "$(git config branch.all1.merge)"
'
test_expect_success 'test overriding tracking setup via --no-track' \
@@ -167,10 +168,10 @@ test_expect_success 'test overriding tracking setup via --no-track' \
! test "$(git config branch.my2.remote)" = local &&
! test "$(git config branch.my2.merge)" = refs/heads/master'
-test_expect_success 'test local tracking setup' \
+test_expect_success 'no tracking without .fetch entries' \
'git branch --track my6 s &&
- test $(git config branch.my6.remote) = . &&
- test $(git config branch.my6.merge) = refs/heads/s'
+ test -z "$(git config branch.my6.remote)" &&
+ test -z "$(git config branch.my6.merge)"'
test_expect_success 'test tracking setup via --track but deeper' \
'git config remote.local.url . &&
@@ -182,8 +183,8 @@ test_expect_success 'test tracking setup via --track but deeper' \
test_expect_success 'test deleting branch deletes branch config' \
'git branch -d my7 &&
- test "$(git config branch.my7.remote)" = "" &&
- test "$(git config branch.my7.merge)" = ""'
+ test -z "$(git config branch.my7.remote)" &&
+ test -z "$(git config branch.my7.merge)"'
test_expect_success 'test deleting branch without config' \
'git branch my7 s &&