mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-30 00:43:38 -05:00
branch: convert delete_branches() to a flags argument
delete_branches() and check_branch_commit() take a pair of int booleans (force and quiet) that the next commits would grow further. Replace them with a single "unsigned int flags" argument and an enum, splitting the bits back into named bool locals so the body keeps reading the same named values. No change in behavior. Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
82a974308c
commit
aaf5816f00
@@ -189,10 +189,16 @@ static int branch_merged(int kind, const char *name,
|
||||
return merged;
|
||||
}
|
||||
|
||||
enum delete_branch_flags {
|
||||
DELETE_BRANCH_FORCE = (1 << 0),
|
||||
DELETE_BRANCH_QUIET = (1 << 1),
|
||||
};
|
||||
|
||||
static int check_branch_commit(const char *branchname, const char *refname,
|
||||
const struct object_id *oid, struct commit *head_rev,
|
||||
int kinds, int force)
|
||||
int kinds, unsigned int flags)
|
||||
{
|
||||
bool force = flags & DELETE_BRANCH_FORCE;
|
||||
struct commit *rev = lookup_commit_reference(the_repository, oid);
|
||||
if (!force && !rev) {
|
||||
error(_("couldn't look up commit object for '%s'"), refname);
|
||||
@@ -217,8 +223,8 @@ static void delete_branch_config(const char *branchname)
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
int quiet)
|
||||
static int delete_branches(int argc, const char **argv, int kinds,
|
||||
unsigned int flags)
|
||||
{
|
||||
struct commit *head_rev = NULL;
|
||||
struct object_id oid;
|
||||
@@ -227,6 +233,8 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
int i;
|
||||
int ret = 0;
|
||||
int remote_branch = 0;
|
||||
bool force;
|
||||
bool quiet = flags & DELETE_BRANCH_QUIET;
|
||||
struct strbuf bname = STRBUF_INIT;
|
||||
enum interpret_branch_kind allowed_interpret;
|
||||
struct string_list refs_to_delete = STRING_LIST_INIT_DUP;
|
||||
@@ -241,7 +249,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
remote_branch = 1;
|
||||
allowed_interpret = INTERPRET_BRANCH_REMOTE;
|
||||
|
||||
force = 1;
|
||||
flags |= DELETE_BRANCH_FORCE;
|
||||
break;
|
||||
case FILTER_REFS_BRANCHES:
|
||||
fmt = "refs/heads/%s";
|
||||
@@ -252,12 +260,14 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
}
|
||||
branch_name_pos = strcspn(fmt, "%");
|
||||
|
||||
force = flags & DELETE_BRANCH_FORCE;
|
||||
|
||||
if (!force)
|
||||
head_rev = lookup_commit_reference(the_repository, &head_oid);
|
||||
|
||||
for (i = 0; i < argc; i++, strbuf_reset(&bname)) {
|
||||
char *target = NULL;
|
||||
int flags = 0;
|
||||
int ref_flags = 0;
|
||||
|
||||
copy_branchname(&bname, argv[i], allowed_interpret);
|
||||
free(name);
|
||||
@@ -279,7 +289,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
RESOLVE_REF_READING
|
||||
| RESOLVE_REF_NO_RECURSE
|
||||
| RESOLVE_REF_ALLOW_BAD_NAME,
|
||||
&oid, &flags);
|
||||
&oid, &ref_flags);
|
||||
if (!target) {
|
||||
if (remote_branch) {
|
||||
error(_("remote-tracking branch '%s' not found"), bname.buf);
|
||||
@@ -291,7 +301,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
| RESOLVE_REF_NO_RECURSE
|
||||
| RESOLVE_REF_ALLOW_BAD_NAME,
|
||||
&oid,
|
||||
&flags);
|
||||
&ref_flags);
|
||||
FREE_AND_NULL(virtual_name);
|
||||
|
||||
if (virtual_target)
|
||||
@@ -306,16 +316,16 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(flags & (REF_ISSYMREF|REF_ISBROKEN)) &&
|
||||
if (!(ref_flags & (REF_ISSYMREF|REF_ISBROKEN)) &&
|
||||
check_branch_commit(bname.buf, name, &oid, head_rev, kinds,
|
||||
force)) {
|
||||
flags)) {
|
||||
ret = 1;
|
||||
goto next;
|
||||
}
|
||||
|
||||
item = string_list_append(&refs_to_delete, name);
|
||||
item->util = xstrdup((flags & REF_ISBROKEN) ? "broken"
|
||||
: (flags & REF_ISSYMREF) ? target
|
||||
item->util = xstrdup((ref_flags & REF_ISBROKEN) ? "broken"
|
||||
: (ref_flags & REF_ISSYMREF) ? target
|
||||
: repo_find_unique_abbrev(the_repository, &oid, DEFAULT_ABBREV));
|
||||
|
||||
next:
|
||||
@@ -872,7 +882,9 @@ int cmd_branch(int argc,
|
||||
if (delete) {
|
||||
if (!argc)
|
||||
die(_("branch name required"));
|
||||
ret = delete_branches(argc, argv, delete > 1, filter.kind, quiet);
|
||||
ret = delete_branches(argc, argv, filter.kind,
|
||||
(delete > 1 ? DELETE_BRANCH_FORCE : 0) |
|
||||
(quiet ? DELETE_BRANCH_QUIET : 0));
|
||||
goto out;
|
||||
} else if (show_current) {
|
||||
print_current_branch_name();
|
||||
|
||||
Reference in New Issue
Block a user