Commit 9d2a2486 authored by Junio C Hamano's avatar Junio C Hamano

Merge branch 'ak/commit-only-allow-empty' into maint

"git commit --allow-empty --only" (no pathspec) with dirty index
ought to be an acceptable way to create a new commit that does not
change any paths, but it was forbidden, perhaps because nobody
needed it so far.

* ak/commit-only-allow-empty:
  commit: remove 'Clever' message for --only --amend
  commit: make --only --allow-empty work without paths
parents 935a4783 beb635ca
......@@ -265,7 +265,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>]::
......
......@@ -1206,10 +1206,8 @@ 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.");
if (argc > 0 && !also && !only)
only_include_assumed = _("Explicit paths specified without -i or -o; assuming --only paths...");
if (!cleanup_arg || !strcmp(cleanup_arg, "default"))
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment