Merge branch 'vv/merge-squash-with-explicit-commit'
"git merge --squash" is designed to update the working tree and the index without creating the commit, and this cannot be countermanded by adding the "--commit" option; the command now refuses to work when both options are given. * vv/merge-squash-with-explicit-commit: merge: refuse --commit with --squash
This commit is contained in:
@ -102,6 +102,8 @@ merge.
|
|||||||
+
|
+
|
||||||
With --no-squash perform the merge and commit the result. This
|
With --no-squash perform the merge and commit the result. This
|
||||||
option can be used to override --squash.
|
option can be used to override --squash.
|
||||||
|
+
|
||||||
|
With --squash, --commit is not allowed, and will fail.
|
||||||
|
|
||||||
-s <strategy>::
|
-s <strategy>::
|
||||||
--strategy=<strategy>::
|
--strategy=<strategy>::
|
||||||
|
@ -59,7 +59,7 @@ static const char * const builtin_merge_usage[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static int show_diffstat = 1, shortlog_len = -1, squash;
|
static int show_diffstat = 1, shortlog_len = -1, squash;
|
||||||
static int option_commit = 1;
|
static int option_commit = -1;
|
||||||
static int option_edit = -1;
|
static int option_edit = -1;
|
||||||
static int allow_trivial = 1, have_message, verify_signatures;
|
static int allow_trivial = 1, have_message, verify_signatures;
|
||||||
static int overwrite_ignore = 1;
|
static int overwrite_ignore = 1;
|
||||||
@ -1345,9 +1345,19 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
|
|||||||
if (squash) {
|
if (squash) {
|
||||||
if (fast_forward == FF_NO)
|
if (fast_forward == FF_NO)
|
||||||
die(_("You cannot combine --squash with --no-ff."));
|
die(_("You cannot combine --squash with --no-ff."));
|
||||||
|
if (option_commit > 0)
|
||||||
|
die(_("You cannot combine --squash with --commit."));
|
||||||
|
/*
|
||||||
|
* squash can now silently disable option_commit - this is not
|
||||||
|
* a problem as it is only overriding the default, not a user
|
||||||
|
* supplied option.
|
||||||
|
*/
|
||||||
option_commit = 0;
|
option_commit = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (option_commit < 0)
|
||||||
|
option_commit = 1;
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
if (default_to_upstream)
|
if (default_to_upstream)
|
||||||
argc = setup_with_upstream(&argv);
|
argc = setup_with_upstream(&argv);
|
||||||
|
@ -570,6 +570,12 @@ test_expect_success 'combining --squash and --no-ff is refused' '
|
|||||||
test_must_fail git merge --no-ff --squash c1
|
test_must_fail git merge --no-ff --squash c1
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'combining --squash and --commit is refused' '
|
||||||
|
git reset --hard c0 &&
|
||||||
|
test_must_fail git merge --squash --commit c1 &&
|
||||||
|
test_must_fail git merge --commit --squash c1
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'option --ff-only overwrites --no-ff' '
|
test_expect_success 'option --ff-only overwrites --no-ff' '
|
||||||
git merge --no-ff --ff-only c1 &&
|
git merge --no-ff --ff-only c1 &&
|
||||||
test_must_fail git merge --no-ff --ff-only c2
|
test_must_fail git merge --no-ff --ff-only c2
|
||||||
|
Reference in New Issue
Block a user