From: Junio C Hamano Date: Tue, 26 Mar 2013 19:43:05 +0000 (-0700) Subject: Merge branch 'nd/branch-error-cases' into maint X-Git-Tag: v1.8.2.1~36 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/307d68e275d21b7e54d464f1e372b33e9444fef2?ds=inline;hp=-c Merge branch 'nd/branch-error-cases' into maint "git branch" had more cases where it did not bother to check nonsense command line parameters. * nd/branch-error-cases: branch: segfault fixes and validation --- 307d68e275d21b7e54d464f1e372b33e9444fef2 diff --combined builtin/branch.c index 6371bf96c4,22ecde5254..00d17d25d1 --- a/builtin/branch.c +++ b/builtin/branch.c @@@ -706,11 -706,11 +706,11 @@@ static int edit_branch_description(cons read_branch_desc(&buf, branch_name); if (!buf.len || buf.buf[buf.len-1] != '\n') strbuf_addch(&buf, '\n'); - strbuf_addf(&buf, - "# Please edit the description for the branch\n" - "# %s\n" - "# Lines starting with '#' will be stripped.\n", - branch_name); + strbuf_commented_addf(&buf, + "Please edit the description for the branch\n" + " %s\n" + "Lines starting with '%c' will be stripped.\n", + branch_name, comment_line_char); fp = fopen(git_path(edit_description), "w"); if ((fwrite(buf.buf, 1, buf.len, fp) < buf.len) || fclose(fp)) { strbuf_release(&buf); @@@ -889,6 -889,17 +889,17 @@@ int cmd_branch(int argc, const char **a } else if (new_upstream) { struct branch *branch = branch_get(argv[0]); + if (argc > 1) + die(_("too many branches to set new upstream")); + + if (!branch) { + if (!argc || !strcmp(argv[0], "HEAD")) + die(_("could not set upstream of HEAD to %s when " + "it does not point to any branch."), + new_upstream); + die(_("no such branch '%s'"), argv[0]); + } + if (!ref_exists(branch->refname)) die(_("branch '%s' does not exist"), branch->name); @@@ -901,6 -912,16 +912,16 @@@ struct branch *branch = branch_get(argv[0]); struct strbuf buf = STRBUF_INIT; + if (argc > 1) + die(_("too many branches to unset upstream")); + + if (!branch) { + if (!argc || !strcmp(argv[0], "HEAD")) + die(_("could not unset upstream of HEAD when " + "it does not point to any branch.")); + die(_("no such branch '%s'"), argv[0]); + } + if (!branch_has_merge_config(branch)) { die(_("Branch '%s' has no upstream information"), branch->name); } @@@ -916,6 -937,12 +937,12 @@@ int branch_existed = 0, remote_tracking = 0; struct strbuf buf = STRBUF_INIT; + if (!strcmp(argv[0], "HEAD")) + die(_("it does not make sense to create 'HEAD' manually")); + + if (!branch) + die(_("no such branch '%s'"), argv[0]); + if (kinds != REF_LOCAL_BRANCH) die(_("-a and -r options to 'git branch' do not make sense with a branch name"));