mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
Refuse deleting the current branch via push
This makes git-push refuse deleting the current branch by default. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
acd2a45b83
commit
375881fa6a
@ -241,30 +241,24 @@ static void refuse_unconfigured_deny(void)
|
||||
error("%s", refuse_unconfigured_deny_msg[i]);
|
||||
}
|
||||
|
||||
static char *warn_unconfigured_deny_delete_current_msg[] = {
|
||||
"Deleting the current branch can cause confusion by making the next",
|
||||
"'git clone' not check out any file.",
|
||||
static char *refuse_unconfigured_deny_delete_current_msg[] = {
|
||||
"By default, deleting the current branch is denied, because the next",
|
||||
"'git clone' won't result in any file checked out, causing confusion.",
|
||||
"",
|
||||
"You can set 'receive.denyDeleteCurrent' configuration variable to",
|
||||
"'refuse' in the remote repository to disallow deleting the current",
|
||||
"branch.",
|
||||
"'warn' or 'ignore' in the remote repository to allow deleting the",
|
||||
"current branch, with or without a warning message.",
|
||||
"",
|
||||
"You can set it to 'ignore' to allow such a delete without a warning.",
|
||||
"",
|
||||
"To make this warning message less loud, you can set it to 'warn'.",
|
||||
"",
|
||||
"Note that the default will change in a future version of git",
|
||||
"to refuse deleting the current branch unless you have the",
|
||||
"configuration variable set to either 'ignore' or 'warn'."
|
||||
"To squelch this message, you can set it to 'refuse'."
|
||||
};
|
||||
|
||||
static void warn_unconfigured_deny_delete_current(void)
|
||||
static void refuse_unconfigured_deny_delete_current(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0;
|
||||
i < ARRAY_SIZE(warn_unconfigured_deny_delete_current_msg);
|
||||
i < ARRAY_SIZE(refuse_unconfigured_deny_delete_current_msg);
|
||||
i++)
|
||||
warning("%s", warn_unconfigured_deny_delete_current_msg[i]);
|
||||
error("%s", refuse_unconfigured_deny_delete_current_msg[i]);
|
||||
}
|
||||
|
||||
static const char *update(struct command *cmd)
|
||||
@ -313,12 +307,12 @@ static const char *update(struct command *cmd)
|
||||
case DENY_IGNORE:
|
||||
break;
|
||||
case DENY_WARN:
|
||||
case DENY_UNCONFIGURED:
|
||||
if (deny_delete_current == DENY_UNCONFIGURED)
|
||||
warn_unconfigured_deny_delete_current();
|
||||
warning("deleting the current branch");
|
||||
break;
|
||||
case DENY_REFUSE:
|
||||
case DENY_UNCONFIGURED:
|
||||
if (deny_delete_current == DENY_UNCONFIGURED)
|
||||
refuse_unconfigured_deny_delete_current();
|
||||
error("refusing to delete the current branch: %s", name);
|
||||
return "deletion of the current branch prohibited";
|
||||
}
|
||||
|
@ -191,16 +191,11 @@ test_expect_success 'pushing wildcard refspecs respects forcing' '
|
||||
test "$parent_head" = "$child_head"
|
||||
'
|
||||
|
||||
test_expect_success 'warn pushing to delete current branch' '
|
||||
test_expect_success 'deny pushing to delete current branch' '
|
||||
rewound_push_setup &&
|
||||
(
|
||||
cd child &&
|
||||
git send-pack ../parent :refs/heads/master 2>errs
|
||||
) &&
|
||||
grep "warning: to refuse deleting" child/errs &&
|
||||
(
|
||||
cd parent &&
|
||||
test_must_fail git rev-parse --verify master
|
||||
test_must_fail git send-pack ../parent :refs/heads/master 2>errs
|
||||
)
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user