summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorJiang Xin <worldhello.net@gmail.com>2013-08-26 15:02:49 +0800
committerJunio C Hamano <gitster@pobox.com>2013-08-26 09:07:53 -0700
commitf223459bec106bbe211a01321e48c050a9cad25e (patch)
tree743b757ac4f6ff478651822f7d805d1310a80846 /t
parentf2e087395b78d5828af400072c1b621e1a373be4 (diff)
downloadgit-f223459bec106bbe211a01321e48c050a9cad25e.tar.gz
status: always show tracking branch even no change
In order to see what the current branch is tracking, one way is using "git branch -v -v", but branches other than the current are also reported. Another way is using "git status", such as: $ git status # On branch master # Your branch is ahead of 'origin/master' by 1 commit. ... But this will not work if there is no change between the current branch and its upstream. Always report upstream tracking info even if there is no difference, so that "git status" is consistent for checking tracking info for current branch. E.g. $ git status # On branch feature1 # Your branch is up-to-date with 'github/feature1'. ... $ git status -bs ## feature1...github/feature1 ... $ git checkout feature1 Already on 'feature1' Your branch is up-to-date with 'github/feature1'. ... Also add some test cases in t6040. Signed-off-by: Jiang Xin <worldhello.net@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/t6040-tracking-info.sh34
1 files changed, 33 insertions, 1 deletions
diff --git a/t/t6040-tracking-info.sh b/t/t6040-tracking-info.sh
index 6f678a4dc2..ba26cfe923 100755
--- a/t/t6040-tracking-info.sh
+++ b/t/t6040-tracking-info.sh
@@ -32,7 +32,8 @@ test_expect_success setup '
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
@@ -61,6 +62,7 @@ b2 origin/master: ahead 1, behind 1
b3 origin/master: behind 1
b4 origin/master: ahead 2
b5 brokenbase: gone
+b6 origin/master
EOF
test_expect_success 'branch -vv' '
@@ -93,6 +95,13 @@ test_expect_success 'checkout (upstream is gone)' '
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 &&
@@ -113,6 +122,16 @@ test_expect_success 'status (upstream is gone)' '
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
@@ -139,6 +158,19 @@ test_expect_success 'status -s -b (upstream is gone)' '
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 &&