[PATCH] update-index: do not die too early in a read-only repository.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Feb 22, 2007, 08:30 UTC
- Message-ID
- <7vhctek30q.fsf_-_@assigned-by-dhcp.cox.net>
- In-Reply-To
- <7vmz36k33y.fsf@assigned-by-dhcp.cox.net>
This delays the error exit from hold_lock_file_for_update() in update-index, so that "update-index --refresh" in a read-only repository can still report what paths are stat-dirty before exiting.
Also it makes -q to squelch the error message.
Signed-off-by: Junio C Hamano <junkio@cox.net> --- builtin-update-index.c | 11 ++++++++++- 1 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/builtin-update-index.c b/builtin-update-index.c index 1ac613a..3fbdc67 100644 --- a/builtin-update-index.c +++ b/builtin-update-index.c @@ -486,6 +486,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) int prefix_length = prefix ? strlen(prefix) : 0; char set_executable_bit = 0; unsigned int refresh_flags = 0; + int lock_error = 0; struct lock_file *lock_file; git_config(git_default_config); @@ -493,7 +494,9 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) /* We can't free this memory, it becomes part of a linked list parsed atexit() */ lock_file = xcalloc(1, sizeof(struct lock_file)); - newfd = hold_lock_file_for_update(lock_file, get_index_file(), 1); + newfd = hold_lock_file_for_update(lock_file, get_index_file(), 0); + if (newfd < 0) + lock_error = errno; entries = read_cache(); if (entries < 0) @@ -650,6 +653,12 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) finish: if (active_cache_changed) { + if (newfd < 0) { + if (refresh_flags & REFRESH_QUIET) + exit(128); + die("unable to create '%s.lock': %s", + get_index_file(), strerror(lock_error)); + } if (write_cache(newfd, active_cache, active_nr) || close(newfd) || commit_lock_file(lock_file)) die("Unable to write new index file");
-- 1.5.0.1.619.g04c5c