Skip to content

Commit

Permalink
Be more specific if upstream branch is not tracked
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Zbigniew Jędrzejewski-Szmek authored and Junio C Hamano committed Apr 15, 2012
1 parent bb0dab5 commit 17c8221
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
7 changes: 6 additions & 1 deletion sha1_name.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions t/t1507-rev-parse-upstream.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 &&
Expand All @@ -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 &&
Expand Down Expand Up @@ -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 &&
Expand Down

0 comments on commit 17c8221

Please sign in to comment.