I noticed that the way "git commit --interactive" sets up the commit is different from the way a normal "git commit" does it. Commit 2888605c changed one, but not the other. This makes the behavior equivalent in the two cases. Signed-off-by: Paolo Bonzini <bonzini@xxxxxxx> --- builtin-commit.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-) I am sending this patch for review as I don't know if it's necessary. The code is a tad cleaner, but it does cause more system calls in the commit --interactive case, because of the additional read of the index. The assert tests that, in the interactive case, we'll go down to the COMMIT_ASIS case. The patch is on top of the previous change I sent for signal handling in git-commit. diff --git a/builtin-commit.c b/builtin-commit.c index ef8b1f0..5a5f9a3 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -219,13 +219,8 @@ static char *prepare_index(int argc, const char **argv, const char *prefix) struct path_list partial; const char **pathspec = NULL; - if (interactive) { + if (interactive) interactive_add(argc, argv, prefix); - if (read_cache() < 0) - die("index file corrupt"); - commit_style = COMMIT_AS_IS; - return get_index_file(); - } if (read_cache() < 0) die("index file corrupt"); @@ -233,6 +228,8 @@ static char *prepare_index(int argc, const char **argv, const char *prefix) if (*argv) pathspec = get_pathspec(prefix, argv); + assert (!(interactive && pathspec && *pathspec)); + signal (SIGINT, rollback_on_signal); signal (SIGHUP, rollback_on_signal); signal (SIGTERM, rollback_on_signal); -- 1.5.5 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html