mirror of
https://github.com/git-for-windows/git.git
synced 2026-06-14 15:01:15 -05:00
branch: let delete_branches warn instead of error on bulk refusal
Add a warn_only flag to delete_branches() and check_branch_commit() so a bulk caller can report not-fully-merged branches as one-line warnings and continue, instead of erroring with the four-line "use 'git branch -D'" advice that the standalone "git branch -d" path emits. Default callers pass 0 and are unaffected. 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
b201bdb32d
commit
0ce3d598de
@@ -192,7 +192,7 @@ static int branch_merged(int kind, const char *name,
|
||||
|
||||
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, int force, int warn_only)
|
||||
{
|
||||
struct commit *rev = lookup_commit_reference(the_repository, oid);
|
||||
if (!force && !rev) {
|
||||
@@ -200,10 +200,16 @@ static int check_branch_commit(const char *branchname, const char *refname,
|
||||
return -1;
|
||||
}
|
||||
if (!force && !branch_merged(kinds, branchname, rev, head_rev)) {
|
||||
error(_("the branch '%s' is not fully merged"), branchname);
|
||||
advise_if_enabled(ADVICE_FORCE_DELETE_BRANCH,
|
||||
_("If you are sure you want to delete it, "
|
||||
"run 'git branch -D %s'"), branchname);
|
||||
if (warn_only) {
|
||||
warning(_("the branch '%s' is not fully merged"),
|
||||
branchname);
|
||||
} else {
|
||||
error(_("the branch '%s' is not fully merged"),
|
||||
branchname);
|
||||
advise_if_enabled(ADVICE_FORCE_DELETE_BRANCH,
|
||||
_("If you are sure you want to delete it, "
|
||||
"run 'git branch -D %s'"), branchname);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
@@ -219,7 +225,7 @@ static void delete_branch_config(const char *branchname)
|
||||
}
|
||||
|
||||
static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
int quiet)
|
||||
int quiet, int warn_only)
|
||||
{
|
||||
struct commit *head_rev = NULL;
|
||||
struct object_id oid;
|
||||
@@ -309,8 +315,9 @@ static int delete_branches(int argc, const char **argv, int force, int kinds,
|
||||
|
||||
if (!(flags & (REF_ISSYMREF|REF_ISBROKEN)) &&
|
||||
check_branch_commit(bname.buf, name, &oid, head_rev, kinds,
|
||||
force)) {
|
||||
ret = 1;
|
||||
force, warn_only)) {
|
||||
if (!warn_only)
|
||||
ret = 1;
|
||||
goto next;
|
||||
}
|
||||
|
||||
@@ -995,7 +1002,8 @@ 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, delete > 1, filter.kind,
|
||||
quiet, 0);
|
||||
goto out;
|
||||
} else if (show_current) {
|
||||
print_current_branch_name();
|
||||
|
||||
Reference in New Issue
Block a user