From a5e91c722cceb667ad05a13f9fde150cc1dbe9aa Mon Sep 17 00:00:00 2001 From: Jeff King Date: Tue, 2 Apr 2013 15:04:27 -0400 Subject: [PATCH] branch: improve error message for missing --set-upstream-to ref If we are trying to set the upstream config for a branch, the create_branch function will check both that the name resolves as a ref, and that it is either a local or remote-tracking branch. However, before we do so we run get_sha1 on it to find out whether it resolves at all (since the create_branch function is also used to create actual branches, it wants to know where to start the new branch). This means that if you feed a ref that does not exist to "branch --set-upstream-to", rather than getting a helpful message about tracking, you only get "not a valid object name". Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- branch.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/branch.c b/branch.c index 1acbd4e6d..060e9e3cf 100644 --- a/branch.c +++ b/branch.c @@ -199,6 +199,8 @@ int validate_new_branchname(const char *name, struct strbuf *ref, static const char upstream_not_branch[] = N_("Cannot setup tracking information; starting point is not a branch."); +static const char upstream_missing[] = +N_("Cannot setup tracking information; starting point does not exist"); void create_branch(const char *head, const char *name, const char *start_name, @@ -227,8 +229,11 @@ void create_branch(const char *head, } real_ref = NULL; - if (get_sha1(start_name, sha1)) + if (get_sha1(start_name, sha1)) { + if (explicit_tracking) + die(_(upstream_missing)); die("Not a valid object name: '%s'.", start_name); + } switch (dwim_ref(start_name, strlen(start_name), sha1, &real_ref)) { case 0: -- 2.11.0