aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2012-04-14 09:54:34 +0200
committerJunio C Hamano <gitster@pobox.com>2012-04-15 14:25:34 -0700
commit17c82211ec2d29a6e7221948cba8dae9074dc5a6 (patch)
tree91e2b82f58aed54df0dbff5e78c81e52495732d9
parentbb0dab5d617219d7efe8815cadef6d98c4bc3df8 (diff)
downloadgit-17c82211ec2d29a6e7221948cba8dae9074dc5a6.tar.gz
git-17c82211ec2d29a6e7221948cba8dae9074dc5a6.tar.xz
Be more specific if upstream branch is not tracked
If the branch configured as upstream didn't have a local tracking branch, git said "Upstream branch not found". We can be more helpful, and separate the cases when upstream is not configured, and when it is configured, but the upstream branch is not tracked in a local branch. The following configuration leads to the second scenario: [remote "origin"] url = ... fetch = refs/heads/master [branch "master"] remote = origin merge = refs/heads/master 'git pull' will work on master, but master@{upstream} is not defined. Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--sha1_name.c7
-rwxr-xr-xt/t1507-rev-parse-upstream.sh6
2 files changed, 9 insertions, 4 deletions
diff --git a/sha1_name.c b/sha1_name.c
index e2d576ad7..361708b7b 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -865,7 +865,12 @@ int interpret_branch_name(const char *name, struct strbuf *buf)
if (!upstream->merge || !upstream->merge[0]->dst) {
if (!ref_exists(upstream->refname))
return error("No such branch: '%s'", cp);
- return error("No upstream branch found for '%s'", upstream->name);
+ if (!upstream->merge)
+ return error("No upstream configured for branch '%s'",
+ upstream->name);
+ return error(
+ "Upstream branch '%s' not stored as a remote-tracking branch",
+ upstream->merge[0]->src);
}
free(cp);
cp = shorten_unambiguous_ref(upstream->merge[0]->dst, 0);
diff --git a/t/t1507-rev-parse-upstream.sh b/t/t1507-rev-parse-upstream.sh
index 2b8ba314a..e742ce033 100755
--- a/t/t1507-rev-parse-upstream.sh
+++ b/t/t1507-rev-parse-upstream.sh
@@ -125,7 +125,7 @@ test_expect_success 'branch@{u} works when tracking a local branch' '
test_expect_success 'branch@{u} error message when no upstream' '
cat >expect <<-EOF &&
- error: No upstream branch found for ${sq}non-tracking${sq}
+ error: No upstream configured for branch ${sq}non-tracking${sq}
fatal: Needed a single revision
EOF
error_message non-tracking@{u} 2>actual &&
@@ -134,7 +134,7 @@ test_expect_success 'branch@{u} error message when no upstream' '
test_expect_success '@{u} error message when no upstream' '
cat >expect <<-EOF &&
- error: No upstream branch found for ${sq}master${sq}
+ error: No upstream configured for branch ${sq}master${sq}
fatal: Needed a single revision
EOF
test_must_fail git rev-parse --verify @{u} 2>actual &&
@@ -162,7 +162,7 @@ test_expect_success '@{u} error message when not on a branch' '
test_expect_success 'branch@{u} error message if upstream branch not fetched' '
cat >expect <<-EOF &&
- error: No upstream branch found for ${sq}bad-upstream${sq}
+ error: Upstream branch ${sq}refs/heads/side${sq} not stored as a remote-tracking branch
fatal: Needed a single revision
EOF
error_message bad-upstream@{u} 2>actual &&