Merge branch 'jh/maint-do-not-track-non-branches' into maint
[gitweb.git] / t / t3200-branch.sh
index bf7747dc331995fe377d4943f450ea295375565e..78ce09f9d788203ebea280cc94c8098c9043311f 100755 (executable)
@@ -26,6 +26,17 @@ test_expect_success \
      ! test -f .git/refs/heads/--help
 '
 
+test_expect_success 'branch -h in broken repository' '
+       mkdir broken &&
+       (
+               cd broken &&
+               git init &&
+               >.git/refs/heads/master &&
+               test_expect_code 129 git branch -h >usage 2>&1
+       ) &&
+       grep "[Uu]sage" broken/usage
+'
+
 test_expect_success \
     'git branch abc should create a branch' \
     'git branch abc && test -f .git/refs/heads/abc'
@@ -212,6 +223,11 @@ test_expect_success \
     'branch from non-branch HEAD w/--track causes failure' \
     'test_must_fail git branch --track my10 HEAD^'
 
+test_expect_success \
+    'branch from tag w/--track causes failure' \
+    'git tag foobar &&
+     test_must_fail git branch --track my11 foobar'
+
 # Keep this test last, as it changes the current branch
 cat >expect <<EOF
 0000000000000000000000000000000000000000 $HEAD $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> 1117150200 +0000     branch: Created from master
@@ -228,28 +244,21 @@ test_expect_success 'checkout -b makes reflog by default' '
        git checkout master &&
        git config --unset core.logAllRefUpdates &&
        git checkout -b alpha &&
-       test -f .git/logs/refs/heads/alpha &&
-       PAGER= git reflog show alpha
+       git rev-parse --verify alpha@{0}
 '
 
 test_expect_success 'checkout -b does not make reflog when core.logAllRefUpdates = false' '
        git checkout master &&
        git config core.logAllRefUpdates false &&
        git checkout -b beta &&
-       ! test -f .git/logs/refs/heads/beta &&
-       (
-               PAGER= &&
-               export PAGER &&
-               test_must_fail git reflog show beta
-       )
+       test_must_fail git rev-parse --verify beta@{0}
 '
 
 test_expect_success 'checkout -b with -l makes reflog when core.logAllRefUpdates = false' '
        git checkout master &&
        git checkout -lb gamma &&
        git config --unset core.logAllRefUpdates &&
-       test -f .git/logs/refs/heads/gamma &&
-       PAGER= git reflog show gamma
+       git rev-parse --verify gamma@{0}
 '
 
 test_expect_success 'avoid ambiguous track' '
@@ -484,6 +493,15 @@ test_expect_success 'autosetuprebase always on an untracked remote branch' '
        test "z$(git config branch.myr20.rebase)" = z
 '
 
+test_expect_success 'autosetuprebase always on detached HEAD' '
+       git config branch.autosetupmerge always &&
+       test_when_finished git checkout master &&
+       git checkout HEAD^0 &&
+       git branch my11 &&
+       test -z "$(git config branch.my11.remote)" &&
+       test -z "$(git config branch.my11.merge)"
+'
+
 test_expect_success 'detect misconfigured autosetuprebase (bad value)' '
        git config branch.autosetuprebase garbage &&
        test_must_fail git branch