git checkout -b brokenbase origin &&
git checkout -b b5 --track brokenbase &&
advance g &&
- git branch -d brokenbase
+ git branch -d brokenbase &&
+ git checkout -b b6 origin
) &&
git checkout -b follower --track master &&
advance h
b3 origin/master: behind 1
b4 origin/master: ahead 2
b5 brokenbase: gone
+b6 origin/master
EOF
test_expect_success 'branch -vv' '
test_i18ngrep "is based on .*, but the upstream is gone." actual
'
+test_expect_success 'checkout (up-to-date with upstream)' '
+ (
+ cd test && git checkout b6
+ ) >actual &&
+ test_i18ngrep "Your branch is up-to-date with .origin/master" actual
+'
+
test_expect_success 'status (diverged from upstream)' '
(
cd test &&
test_i18ngrep "is based on .*, but the upstream is gone." actual
'
+test_expect_success 'status (up-to-date with upstream)' '
+ (
+ cd test &&
+ git checkout b6 >/dev/null &&
+ # reports nothing to commit
+ test_must_fail git commit --dry-run
+ ) >actual &&
+ test_i18ngrep "Your branch is up-to-date with .origin/master" actual
+'
+
cat >expect <<\EOF
## b1...origin/master [ahead 1, behind 1]
EOF
test_i18ncmp expect actual
'
+cat >expect <<\EOF
+## b6...origin/master
+EOF
+
+test_expect_success 'status -s -b (up-to-date with upstream)' '
+ (
+ cd test &&
+ git checkout b6 >/dev/null &&
+ git status -s -b | head -1
+ ) >actual &&
+ test_i18ncmp expect actual
+'
+
test_expect_success 'fail to track lightweight tags' '
git checkout master &&
git tag light &&