Skip to content

Commit

Permalink
update-index: do not die too early in a read-only repository.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Feb 22, 2007
1 parent 2b5f9a8 commit 7b802b8
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion builtin-update-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,14 +486,17 @@ 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);

/* 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)
Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit 7b802b8

Please sign in to comment.