Skip to content

Commit

Permalink
[PATCH] Make git-update-cache --refresh fail if update/merge needed.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano authored and Linus Torvalds committed May 2, 2005
1 parent fa9e9c7 commit 9053521
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions update-cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -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++;
Expand All @@ -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;
}

/*
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -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")) {
Expand All @@ -369,5 +374,5 @@ int main(int argc, char **argv)
die("Unable to write new cachefile");

lockfile_name = NULL;
return 0;
return has_errors;
}

0 comments on commit 9053521

Please sign in to comment.