diff options
author | Jeff King <peff@peff.net> | 2013-04-02 15:04:27 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-04-02 16:14:10 -0700 |
commit | a5e91c722cceb667ad05a13f9fde150cc1dbe9aa (patch) | |
tree | 7b9d277f22418fb4f95df70752c7fa72cd51b07d /branch.c | |
parent | e2b6aa5f1b85d5f49f0cf280162cf216e55e1eba (diff) | |
download | git-a5e91c722cceb667ad05a13f9fde150cc1dbe9aa.tar.gz |
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 <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'branch.c')
-rw-r--r-- | branch.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -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: |