summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b4cf0f1)
raw | patch | inline | side by side (parent: b4cf0f1)
author | Junio C Hamano <gitster@pobox.com> | |
Wed, 7 Jul 2010 04:53:11 +0000 (21:53 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Wed, 7 Jul 2010 04:53:11 +0000 (21:53 -0700) |
Some codepaths, such as "git status" and "git commit --dry-run",
tried to opportunisticly refresh the index and write the result
out. But they did so without checking if there was actually any
change that needs to be written out.
Noticed by Jeff King and Daniel at Rutgers.edu
Signed-off-by: Junio C Hamano <gitster@pobox.com>
tried to opportunisticly refresh the index and write the result
out. But they did so without checking if there was actually any
change that needs to be written out.
Noticed by Jeff King and Daniel at Rutgers.edu
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/commit.c | patch | blob | history |
diff --git a/builtin/commit.c b/builtin/commit.c
index 80c621dc061f9bb67a521dfb857ec52b536eacfd..da18287ca9f9d2ced22f9b210047c1282b0a9dd2 100644 (file)
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -334,9 +334,13 @@ static char *prepare_index(int argc, const char **argv, const char *prefix, int
if (!pathspec || !*pathspec) {
fd = hold_locked_index(&index_lock, 1);
refresh_cache_or_die(refresh_flags);
- if (write_cache(fd, active_cache, active_nr) ||
- commit_locked_index(&index_lock))
- die("unable to write new_index file");
+ if (active_cache_changed) {
+ if (write_cache(fd, active_cache, active_nr) ||
+ commit_locked_index(&index_lock))
+ die("unable to write new_index file");
+ } else {
+ rollback_lock_file(&index_lock);
+ }
commit_style = COMMIT_AS_IS;
return get_index_file();
}
fd = hold_locked_index(&index_lock, 0);
if (0 <= fd) {
- if (!write_cache(fd, active_cache, active_nr))
+ if (active_cache_changed &&
+ !write_cache(fd, active_cache, active_nr))
commit_locked_index(&index_lock);
- rollback_lock_file(&index_lock);
+ else
+ rollback_lock_file(&index_lock);
}
s.is_initial = get_sha1(s.reference, sha1) ? 1 : 0;