Brandon Casey [off-list ref] writes:
quoted
We would need to tell the user that the index is not where
it is when we detect the error, though.
The new index we are trying to rename will be deleted.
Are you saying we should
warn the user that the index is now out of sync?
Yeah, something like that. But I think that once this happens
there is no easy and sane recovery path for the user, as the
most likely cause of the failure there would be the user running
out of quota, so "git reset HEAD" which may be the way to
recover from that failure would not have enough room to create a
new index file anyway.
---
Junio C Hamano wrote:
Brandon Casey [off-list ref] writes:
quoted
quoted
We would need to tell the user that the index is not where
it is when we detect the error, though.
The new index we are trying to rename will be deleted.
Are you saying we should
warn the user that the index is now out of sync?
Yeah, something like that. But I think that once this happens
there is no easy and sane recovery path for the user, as the
most likely cause of the failure there would be the user running
out of quota, so "git reset HEAD" which may be the way to
recover from that failure would not have enough room to create a
new index file anyway.
If you're interested, here's a patch.
-brandon
builtin-commit.c | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/builtin-commit.c b/builtin-commit.c
index 0227936..d8deb1a 100644
--- a/builtin-commit.c
+++ b/builtin-commit.c
@@ -122,19 +122,23 @@ static void rollback_index_files(void)
}
}
-static void commit_index_files(void)
+static int commit_index_files(void)
{
+ int err = 0;
+
switch (commit_style) {
case COMMIT_AS_IS:
break; /* nothing to do */
case COMMIT_NORMAL:
- commit_lock_file(&index_lock);
+ err = commit_lock_file(&index_lock);
break;
case COMMIT_PARTIAL:
- commit_lock_file(&index_lock);
+ err = commit_lock_file(&index_lock);
rollback_lock_file(&false_lock);
break;
}
+
+ return err;
}
/*@@ -926,7 +930,10 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
unlink(git_path("MERGE_HEAD"));
unlink(git_path("MERGE_MSG"));
- commit_index_files();
+ if (commit_index_files())
+ die ("Repository has been updated, but unable to write\n"
+ "new_index file. Check that disk is not full or quota is\n"
+ "not exceeded, and then \"git reset HEAD\" to recover.");
rerere();
run_hook(get_index_file(), "post-commit", NULL);--
1.5.4.rc4.16.gdd591