]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/branch.c
Merge branch 'jc/branch-parseopt-fix'
[thirdparty/git.git] / builtin / branch.c
index a27bc0a3df6d2a56ae782d5dd4499a87e74dcb6f..08da650516037e2e18b2e99831562db533111254 100644 (file)
@@ -701,7 +701,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
        int reflog = 0, quiet = 0, icase = 0, force = 0,
            recurse_submodules_explicit = 0;
        enum branch_track track;
-       struct ref_filter filter;
+       struct ref_filter filter = REF_FILTER_INIT;
        static struct ref_sorting *sorting;
        struct string_list sorting_options = STRING_LIST_INIT_DUP;
        struct ref_format format = REF_FORMAT_INIT;
@@ -720,8 +720,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                OPT_STRING('u', "set-upstream-to", &new_upstream, N_("upstream"), N_("change 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),
+               OPT_SET_INT_F('r', "remotes",     &filter.kind, N_("act on remote-tracking branches"),
+                             FILTER_REFS_REMOTES,
+                             PARSE_OPT_NONEG),
                OPT_CONTAINS(&filter.with_commit, N_("print only branches that contain the commit")),
                OPT_NO_CONTAINS(&filter.no_commit, N_("print only branches that don't contain the commit")),
                OPT_WITH(&filter.with_commit, N_("print only branches that contain the commit")),
@@ -729,8 +730,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                OPT__ABBREV(&filter.abbrev),
 
                OPT_GROUP(N_("Specific git-branch actions:")),
-               OPT_SET_INT('a', "all", &filter.kind, N_("list both remote-tracking and local branches"),
-                       FILTER_REFS_REMOTES | FILTER_REFS_BRANCHES),
+               OPT_SET_INT_F('a', "all", &filter.kind, N_("list both remote-tracking and local branches"),
+                             FILTER_REFS_REMOTES | FILTER_REFS_BRANCHES,
+                             PARSE_OPT_NONEG),
                OPT_BIT('d', "delete", &delete, N_("delete fully merged branch"), 1),
                OPT_BIT('D', NULL, &delete, N_("delete branch (even if not merged)"), 2),
                OPT_BIT('m', "move", &rename, N_("move/rename a branch and its reflog"), 1),
@@ -759,7 +761,6 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
 
        setup_ref_filter_porcelain_msg();
 
-       memset(&filter, 0, sizeof(filter));
        filter.kind = FILTER_REFS_BRANCHES;
        filter.abbrev = -1;
 
@@ -855,6 +856,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                print_columns(&output, colopts, NULL);
                string_list_clear(&output, 0);
                ref_sorting_release(sorting);
+               ref_filter_clear(&filter);
                return 0;
        } else if (edit_description) {
                const char *branch_name;