From: Thomas Rast <trast@xxxxxxxxxxxxxxx> While write-tree has code to write out the cache-tree information (since we have to compute it anyway if the cache is stale), commit lost this capability when it became a builtin and moved away from using write-tree. Add the necessary code to write out the cache. This is extremely similar to what write_cache_as_tree() does. Reported-by: Carlos Martín Nieto <cmn@xxxxxxxx> Signed-off-by: Thomas Rast <trast@xxxxxxxxxxxxxxx> --- Reported on IRC. There's a similar disparity between read-tree and checkout, but I first have to understand the exact conditions in or around unpack_trees() [checkout.c:417] where the read-tree reasoning applies. builtin/commit.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/builtin/commit.c b/builtin/commit.c index e1af9b1..47b0eea 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -637,6 +637,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix, const char *hook_arg2 = NULL; int ident_shown = 0; int clean_message_contents = (cleanup_mode != CLEANUP_NONE); + int fd; + struct lock_file *lock_file; if (!no_verify && run_hook(index_file, "pre-commit", NULL)) return 0; @@ -861,6 +863,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix, * the editor and after we invoke run_status above. */ discard_cache(); + lock_file = xcalloc(1, sizeof(struct lock_file)); + fd = hold_lock_file_for_update(lock_file, index_file, LOCK_DIE_ON_ERROR); read_cache_from(index_file); if (!active_cache_tree) active_cache_tree = cache_tree(); @@ -869,6 +873,11 @@ static int prepare_to_commit(const char *index_file, const char *prefix, error(_("Error building trees")); return 0; } + if (0 <= fd) { + if (write_cache(fd, active_cache, active_nr) || + commit_lock_file(lock_file)) + rollback_lock_file(lock_file); + } if (run_hook(index_file, "prepare-commit-msg", git_path(commit_editmsg), hook_arg1, hook_arg2, NULL)) -- 1.7.6.668.g17b0a -- 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