mirror of
https://github.com/git/git.git
synced 2025-04-21 04:37:20 +00:00
commit: make --only --allow-empty work without paths
--only is implied when paths are present, and required them unless --amend. But with --allow-empty it should be allowed as well - it is the only way to create an empty commit in the presence of staged changes. Signed-off-by: Andreas Krey <a.krey@gmx.de> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
0202c411ed
commit
319d835240
@ -263,7 +263,8 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].)
|
||||
If this option is specified together with `--amend`, then
|
||||
no paths need to be specified, which can be used to amend
|
||||
the last commit without committing changes that have
|
||||
already been staged.
|
||||
already been staged. If used together with `--allow-empty`
|
||||
paths are also not required, and an empty commit will be created.
|
||||
|
||||
-u[<mode>]::
|
||||
--untracked-files[=<mode>]::
|
||||
|
@ -1201,7 +1201,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
|
||||
|
||||
if (also + only + all + interactive > 1)
|
||||
die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
|
||||
if (argc == 0 && (also || (only && !amend)))
|
||||
if (argc == 0 && (also || (only && !amend && !allow_empty)))
|
||||
die(_("No paths with --include/--only does not make sense."));
|
||||
if (argc == 0 && only && amend)
|
||||
only_include_assumed = _("Clever... amending the last one with dirty index.");
|
||||
|
@ -155,6 +155,15 @@ test_expect_success 'amend --only ignores staged contents' '
|
||||
git diff --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'allow-empty --only ignores staged contents' '
|
||||
echo changed-again >file &&
|
||||
git add file &&
|
||||
git commit --allow-empty --only -m "empty" &&
|
||||
git cat-file blob HEAD:file >file.actual &&
|
||||
test_cmp file.expect file.actual &&
|
||||
git diff --exit-code
|
||||
'
|
||||
|
||||
test_expect_success 'set up editor' '
|
||||
cat >editor <<-\EOF &&
|
||||
#!/bin/sh
|
||||
|
Loading…
x
Reference in New Issue
Block a user