commit: fix "--amend --only" with no pathspec
authorJeff King <peff@peff.net>
Tue, 10 Jul 2012 20:40:29 +0000 (16:40 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 10 Jul 2012 21:16:41 +0000 (14:16 -0700)
commitea2d4ed35902ce15959965ab86d80527731a177c
tree4512fb08e9c98c699f40e59a1fbbe8002ce54ea1
parentcbcab75c54b5956dcaa4f24a4074bc99adc49629
commit: fix "--amend --only" with no pathspec

When we do not have any pathspec, we typically disallow an
explicit "--only", because it makes no sense (your commit
would, by definition, be empty). But since 6a74642
(git-commit --amend: two fixes., 2006-04-20), we have
allowed "--amend --only" with the intent that it would amend
the commit, ignoring any contents staged in the index.

However, while that commit allowed the combination, we never
actually implemented the logic to make it work. The current
code notices that we have no pathspec and assumes we want to
do an as-is commit (i.e., the "--only" is ignored).

Instead, we must make sure to follow the partial-commit
code-path. We also need to tweak the list_paths function to
handle a NULL pathspec.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-commit.c
t/t7501-commit.sh