diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-01-17 15:11:03 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-01-17 15:11:03 -0800 |
commit | 9d2a24864e8f0a1ab2fc6b72c64a4f1d4aa9fe94 (patch) | |
tree | 8433cce3f129be82632e1c71f4d6744d7fb61d8f | |
parent | Merge branch 'da/difftool-dir-diff-fix' into maint (diff) | |
parent | commit: remove 'Clever' message for --only --amend (diff) | |
download | tgif-9d2a24864e8f0a1ab2fc6b72c64a4f1d4aa9fe94.tar.xz |
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
-rw-r--r-- | Documentation/git-commit.txt | 3 | ||||
-rw-r--r-- | builtin/commit.c | 4 | ||||
-rwxr-xr-x | t/t7501-commit.sh | 9 |
3 files changed, 12 insertions, 4 deletions
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index f2ab0ee2e7..4f8f20a360 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -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>]:: diff --git a/builtin/commit.c b/builtin/commit.c index 8976c3d29b..276c74034e 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -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")) diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index d84897a67a..0d8d893090 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -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 |