diff options
-rw-r--r-- | update-cache.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/update-cache.c b/update-cache.c index 5dda89a93e..d53c9b5c35 100644 --- a/update-cache.c +++ b/update-cache.c @@ -212,15 +212,17 @@ static struct cache_entry *refresh_entry(struct cache_entry *ce) return updated; } -static void refresh_cache(void) +static int refresh_cache(void) { int i; + int has_errors = 0; for (i = 0; i < active_nr; i++) { struct cache_entry *ce, *new; ce = active_cache[i]; if (ce_stage(ce)) { printf("%s: needs merge\n", ce->name); + has_errors = 1; while ((i < active_nr) && ! strcmp(active_cache[i]->name, ce->name)) i++; @@ -230,12 +232,15 @@ static void refresh_cache(void) new = refresh_entry(ce); if (IS_ERR(new)) { - if (!(not_new && PTR_ERR(new) == -ENOENT)) + if (!(not_new && PTR_ERR(new) == -ENOENT)) { printf("%s: needs update\n", ce->name); + has_errors = 1; + } continue; } active_cache[i] = new; } + return has_errors; } /* @@ -307,7 +312,7 @@ static void remove_lock_file_on_signal(int signo) int main(int argc, char **argv) { - int i, newfd, entries; + int i, newfd, entries, has_errors = 0; int allow_options = 1; static char lockfile[MAXPATHLEN+1]; const char *indexfile = get_index_file(); @@ -343,7 +348,7 @@ int main(int argc, char **argv) continue; } if (!strcmp(path, "--refresh")) { - refresh_cache(); + has_errors |= refresh_cache(); continue; } if (!strcmp(path, "--cacheinfo")) { @@ -369,5 +374,5 @@ int main(int argc, char **argv) die("Unable to write new cachefile"); lockfile_name = NULL; - return 0; + return has_errors; } |