Skip to content

Commit

Permalink
Merge branch 'jk/maint-commit-amend-only-no-paths' into maint
Browse files Browse the repository at this point in the history
"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
  • Loading branch information
Junio C Hamano committed Jul 22, 2012
2 parents 1cd2913 + ea2d4ed commit f5a8400
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
5 changes: 4 additions & 1 deletion builtin/commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down
10 changes: 10 additions & 0 deletions t/t7501-commit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit f5a8400

Please sign in to comment.