Merge branch 'ep/doc-check-ref-format-example'
[gitweb.git] / builtin / branch.c
index bf0672578f3b1a875b7cc691a27f77e96f394909..d5d93a8c03fe42e6b682be4da14dd50f355de269 100644 (file)
@@ -212,7 +212,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                        die(_("Couldn't look up commit object for HEAD"));
        }
        for (i = 0; i < argc; i++, strbuf_release(&bname)) {
-               const char *target;
+               char *target = NULL;
                int flags = 0;
 
                strbuf_branchname(&bname, argv[i]);
@@ -231,11 +231,11 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                        }
                }
 
-               target = resolve_ref_unsafe(name,
-                                           RESOLVE_REF_READING
-                                           | RESOLVE_REF_NO_RECURSE
-                                           | RESOLVE_REF_ALLOW_BAD_NAME,
-                                           sha1, &flags);
+               target = resolve_refdup(name,
+                                       RESOLVE_REF_READING
+                                       | RESOLVE_REF_NO_RECURSE
+                                       | RESOLVE_REF_ALLOW_BAD_NAME,
+                                       sha1, &flags);
                if (!target) {
                        error(remote_branch
                              ? _("remote-tracking branch '%s' not found.")
@@ -248,7 +248,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                    check_branch_commit(bname.buf, name, sha1, head_rev, kinds,
                                        force)) {
                        ret = 1;
-                       continue;
+                       goto next;
                }
 
                if (delete_ref(name, is_null_sha1(sha1) ? NULL : sha1,
@@ -258,7 +258,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                              : _("Error deleting branch '%s'"),
                              bname.buf);
                        ret = 1;
-                       continue;
+                       goto next;
                }
                if (!quiet) {
                        printf(remote_branch
@@ -270,6 +270,9 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
                               : find_unique_abbrev(sha1, DEFAULT_ABBREV));
                }
                delete_branch_config(bname.buf);
+
+       next:
+               free(target);
        }
 
        free(name);
@@ -654,7 +657,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                OPT_SET_INT( 0, "set-upstream",  &track, N_("change upstream info"),
                        BRANCH_TRACK_OVERRIDE),
                OPT_STRING('u', "set-upstream-to", &new_upstream, N_("upstream"), N_("change the upstream info")),
-               OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
+               OPT_BOOL(0, "unset-upstream", &unset_upstream, N_("Unset the upstream info")),
                OPT__COLOR(&branch_use_color, N_("use colored output")),
                OPT_SET_INT('r', "remotes",     &filter.kind, N_("act on remote-tracking branches"),
                        FILTER_REFS_REMOTES),