mirror of
https://github.com/git/git
synced 2024-09-13 21:34:42 +00:00
Merge branch 'mg/branch-d-m-f'
"git branch -d" (delete) and "git branch -m" (move) learned to honor "-f" (force) flag; unlike many other subcommands, the way to force these have been with separate "-D/-M" options, which was inconsistent. * mg/branch-d-m-f: branch: allow -f with -m and -d t3200-branch: test -M
This commit is contained in:
commit
15a171f6eb
|
@ -800,7 +800,7 @@ static int edit_branch_description(const char *branch_name)
|
||||||
|
|
||||||
int cmd_branch(int argc, const char **argv, const char *prefix)
|
int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
int delete = 0, rename = 0, force_create = 0, list = 0;
|
int delete = 0, rename = 0, force = 0, list = 0;
|
||||||
int verbose = 0, abbrev = -1, detached = 0;
|
int verbose = 0, abbrev = -1, detached = 0;
|
||||||
int reflog = 0, edit_description = 0;
|
int reflog = 0, edit_description = 0;
|
||||||
int quiet = 0, unset_upstream = 0;
|
int quiet = 0, unset_upstream = 0;
|
||||||
|
@ -848,7 +848,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
OPT_BOOL('l', "create-reflog", &reflog, N_("create the branch's reflog")),
|
OPT_BOOL('l', "create-reflog", &reflog, N_("create the branch's reflog")),
|
||||||
OPT_BOOL(0, "edit-description", &edit_description,
|
OPT_BOOL(0, "edit-description", &edit_description,
|
||||||
N_("edit the description for the branch")),
|
N_("edit the description for the branch")),
|
||||||
OPT__FORCE(&force_create, N_("force creation (when already exists)")),
|
OPT__FORCE(&force, N_("force creation, move/rename, deletion")),
|
||||||
{
|
{
|
||||||
OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref,
|
OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref,
|
||||||
N_("commit"), N_("print only not merged branches"),
|
N_("commit"), N_("print only not merged branches"),
|
||||||
|
@ -891,7 +891,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
if (with_commit || merge_filter != NO_FILTER)
|
if (with_commit || merge_filter != NO_FILTER)
|
||||||
list = 1;
|
list = 1;
|
||||||
|
|
||||||
if (!!delete + !!rename + !!force_create + !!new_upstream +
|
if (!!delete + !!rename + !!new_upstream +
|
||||||
list + unset_upstream > 1)
|
list + unset_upstream > 1)
|
||||||
usage_with_options(builtin_branch_usage, options);
|
usage_with_options(builtin_branch_usage, options);
|
||||||
|
|
||||||
|
@ -904,6 +904,11 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
colopts = 0;
|
colopts = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (force) {
|
||||||
|
delete *= 2;
|
||||||
|
rename *= 2;
|
||||||
|
}
|
||||||
|
|
||||||
if (delete) {
|
if (delete) {
|
||||||
if (!argc)
|
if (!argc)
|
||||||
die(_("branch name required"));
|
die(_("branch name required"));
|
||||||
|
@ -1020,7 +1025,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
|
|
||||||
branch_existed = ref_exists(branch->refname);
|
branch_existed = ref_exists(branch->refname);
|
||||||
create_branch(head, argv[0], (argc == 2) ? argv[1] : head,
|
create_branch(head, argv[0], (argc == 2) ? argv[1] : head,
|
||||||
force_create, reflog, 0, quiet, track);
|
force, reflog, 0, quiet, track);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We only show the instructions if the user gave us
|
* We only show the instructions if the user gave us
|
||||||
|
|
|
@ -97,6 +97,20 @@ test_expect_success 'git branch -m o/o o should fail when o/p exists' '
|
||||||
test_must_fail git branch -m o/o o
|
test_must_fail git branch -m o/o o
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git branch -m o/q o/p should fail when o/p exists' '
|
||||||
|
git branch o/q &&
|
||||||
|
test_must_fail git branch -m o/q o/p
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git branch -M o/q o/p should work when o/p exists' '
|
||||||
|
git branch -M o/q o/p
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'git branch -m -f o/q o/p should work when o/p exists' '
|
||||||
|
git branch o/q &&
|
||||||
|
git branch -m -f o/q o/p
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'git branch -m q r/q should fail when r exists' '
|
test_expect_success 'git branch -m q r/q should fail when r exists' '
|
||||||
git branch q &&
|
git branch q &&
|
||||||
git branch r &&
|
git branch r &&
|
||||||
|
|
Loading…
Reference in a new issue