Code

Merge branch 'mk/maint-cg-push'
authorJunio C Hamano <gitster@pobox.com>
Thu, 13 Nov 2008 06:26:24 +0000 (22:26 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 13 Nov 2008 06:26:24 +0000 (22:26 -0800)
* mk/maint-cg-push:
  git push: Interpret $GIT_DIR/branches in a Cogito compatible way

Conflicts:
t/t5516-fetch-push.sh

1  2 
remote.c
t/t5516-fetch-push.sh

diff --cc remote.c
Simple merge
index a6532cb29e311ec90430eea0349179e69d68e2fd,f9e878022a93657a8b8d81339670f4d910392755..4426df9226535c55eacff80217c4ab70f77639b6
@@@ -486,41 -494,54 +486,91 @@@ test_expect_success 'allow deleting an 
  
  '
  
 +test_expect_success 'warn on push to HEAD of non-bare repository' '
 +      mk_test heads/master
 +      (cd testrepo &&
 +              git checkout master &&
 +              git config receive.denyCurrentBranch warn) &&
 +      git push testrepo master 2>stderr &&
 +      grep "warning.*this may cause confusion" stderr
 +'
 +
 +test_expect_success 'deny push to HEAD of non-bare repository' '
 +      mk_test heads/master
 +      (cd testrepo &&
 +              git checkout master &&
 +              git config receive.denyCurrentBranch true) &&
 +      test_must_fail git push testrepo master
 +'
 +
 +test_expect_success 'allow push to HEAD of bare repository (bare)' '
 +      mk_test heads/master
 +      (cd testrepo &&
 +              git checkout master &&
 +              git config receive.denyCurrentBranch true &&
 +              git config core.bare true) &&
 +      git push testrepo master 2>stderr &&
 +      ! grep "warning.*this may cause confusion" stderr
 +'
 +
 +test_expect_success 'allow push to HEAD of non-bare repository (config)' '
 +      mk_test heads/master
 +      (cd testrepo &&
 +              git checkout master &&
 +              git config receive.denyCurrentBranch false
 +      ) &&
 +      git push testrepo master 2>stderr &&
 +      ! grep "warning.*this may cause confusion" stderr
 +'
 +
+ test_expect_success 'fetch with branches' '
+       mk_empty &&
+       git branch second $the_first_commit &&
+       git checkout second &&
+       echo ".." > testrepo/.git/branches/branch1 &&
+       (cd testrepo &&
+               git fetch branch1 &&
+               r=$(git show-ref -s --verify refs/heads/branch1) &&
+               test "z$r" = "z$the_commit" &&
+               test 1 = $(git for-each-ref refs/heads | wc -l)
+       ) &&
+       git checkout master
+ '
+ test_expect_success 'fetch with branches containing #' '
+       mk_empty &&
+       echo "..#second" > testrepo/.git/branches/branch2 &&
+       (cd testrepo &&
+               git fetch branch2 &&
+               r=$(git show-ref -s --verify refs/heads/branch2) &&
+               test "z$r" = "z$the_first_commit" &&
+               test 1 = $(git for-each-ref refs/heads | wc -l)
+       ) &&
+       git checkout master
+ '
+ test_expect_success 'push with branches' '
+       mk_empty &&
+       git checkout second &&
+       echo "testrepo" > .git/branches/branch1 &&
+       git push branch1 &&
+       (cd testrepo &&
+               r=$(git show-ref -s --verify refs/heads/master) &&
+               test "z$r" = "z$the_first_commit" &&
+               test 1 = $(git for-each-ref refs/heads | wc -l)
+       )
+ '
+ test_expect_success 'push with branches containing #' '
+       mk_empty &&
+       echo "testrepo#branch3" > .git/branches/branch2 &&
+       git push branch2 &&
+       (cd testrepo &&
+               r=$(git show-ref -s --verify refs/heads/branch3) &&
+               test "z$r" = "z$the_first_commit" &&
+               test 1 = $(git for-each-ref refs/heads | wc -l)
+       ) &&
+       git checkout master
+ '
  test_done