aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2012-07-15 21:39:48 -0700
committerJunio C Hamano <gitster@pobox.com>2012-07-15 21:39:48 -0700
commitb9a0801ad0222256e2ddbf38d8bcce9f32e0211c (patch)
tree3aeddda7fd01f6c48a5bfaba63dcdfaad6348bcf
parent8647b585d899bc7458fbc5c12c2c44331da5b4c0 (diff)
parentea2d4ed35902ce15959965ab86d80527731a177c (diff)
downloadgit-b9a0801ad0222256e2ddbf38d8bcce9f32e0211c.tar.gz
git-b9a0801ad0222256e2ddbf38d8bcce9f32e0211c.tar.xz
Merge branch 'jk/maint-commit-amend-only-no-paths'
"git commit --amend --only --" was meant to allow "Clever" people to rewrite the commit message without making any change even when they have already changes for the next commit added to their index, but it never worked as advertised since it was introduced in 1.3.0 era. * jk/maint-commit-amend-only-no-paths: commit: fix "--amend --only" with no pathspec
-rw-r--r--builtin/commit.c5
-rwxr-xr-xt/t7501-commit.sh10
2 files changed, 14 insertions, 1 deletions
diff --git a/builtin/commit.c b/builtin/commit.c
index 6515da278..95eeab1d5 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -184,6 +184,9 @@ static int list_paths(struct string_list *list, const char *with_tree,
int i;
char *m;
+ if (!pattern)
+ return 0;
+
for (i = 0; pattern[i]; i++)
;
m = xcalloc(1, i);
@@ -345,7 +348,7 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
* and create commit from the_index.
* We still need to refresh the index here.
*/
- if (!pathspec || !*pathspec) {
+ if (!only && (!pathspec || !*pathspec)) {
fd = hold_locked_index(&index_lock, 1);
refresh_cache_or_die(refresh_flags);
if (active_cache_changed) {
diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh
index 0f83be80e..195e7477d 100755
--- a/t/t7501-commit.sh
+++ b/t/t7501-commit.sh
@@ -108,6 +108,16 @@ test_expect_success 'amend commit' '
EDITOR=./editor git commit --amend
'
+test_expect_success 'amend --only ignores staged contents' '
+ cp file file.expect &&
+ echo changed >file &&
+ git add file &&
+ git commit --no-edit --amend --only &&
+ 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