aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-05-01 21:07:40 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-01 21:07:40 -0700
commit90535218ddcf530bfdbae450f92385eeef954ce8 (patch)
treeaf9287f94561344e033082f30e27b997a894e902
parentfa9e9c7bc4d6437537a78517f7f6909340e25ad9 (diff)
downloadgit-90535218ddcf530bfdbae450f92385eeef954ce8.tar.gz
git-90535218ddcf530bfdbae450f92385eeef954ce8.tar.xz
[PATCH] Make git-update-cache --refresh fail if update/merge needed.
Scripts may find it useful if they do not have to parse the output from the command but just can rely on its exit status. Earlier both Linus and myself thought this would be necessary to make git-prune-script safer but it turns out that the issue was somewhere else and not related to what this patch addresses. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--update-cache.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/update-cache.c b/update-cache.c
index 5dda89a93..d53c9b5c3 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;
}