mirror of
https://github.com/git/git.git
synced 2024-10-31 14:27:54 +01:00
fetch: report local storage errors in status table
Previously, if there was an error while storing a local tracking ref, the low-level functions would report an error, but fetch's status output wouldn't indicate any problem. E.g., imagine you have an old "refs/remotes/origin/foo/bar" but upstream has deleted "foo/bar" in favor of a new branch "foo". You would get output like this: error: there are still refs under 'refs/remotes/origin/foo' From $url_of_repo * [new branch] foo -> origin/foo With this patch, the output takes into account the status of updating the local ref: error: there are still refs under 'refs/remotes/origin/foo' From $url_of_repo ! [new branch] foo -> origin/foo (unable to update local ref) Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7ac749c96d
commit
6315472eed
1 changed files with 24 additions and 12 deletions
|
@ -233,10 +233,12 @@ static int update_local_ref(struct ref *ref,
|
||||||
|
|
||||||
if (!is_null_sha1(ref->old_sha1) &&
|
if (!is_null_sha1(ref->old_sha1) &&
|
||||||
!prefixcmp(ref->name, "refs/tags/")) {
|
!prefixcmp(ref->name, "refs/tags/")) {
|
||||||
sprintf(display, "- %-*s %-*s -> %s",
|
int r;
|
||||||
|
r = s_update_ref("updating tag", ref, 0);
|
||||||
|
sprintf(display, "%c %-*s %-*s -> %s%s", r ? '!' : '-',
|
||||||
SUMMARY_WIDTH, "[tag update]", REFCOL_WIDTH, remote,
|
SUMMARY_WIDTH, "[tag update]", REFCOL_WIDTH, remote,
|
||||||
pretty_ref);
|
pretty_ref, r ? " (unable to update local ref)" : "");
|
||||||
return s_update_ref("updating tag", ref, 0);
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
current = lookup_commit_reference_gently(ref->old_sha1, 1);
|
current = lookup_commit_reference_gently(ref->old_sha1, 1);
|
||||||
|
@ -244,6 +246,7 @@ static int update_local_ref(struct ref *ref,
|
||||||
if (!current || !updated) {
|
if (!current || !updated) {
|
||||||
const char *msg;
|
const char *msg;
|
||||||
const char *what;
|
const char *what;
|
||||||
|
int r;
|
||||||
if (!strncmp(ref->name, "refs/tags/", 10)) {
|
if (!strncmp(ref->name, "refs/tags/", 10)) {
|
||||||
msg = "storing tag";
|
msg = "storing tag";
|
||||||
what = "[new tag]";
|
what = "[new tag]";
|
||||||
|
@ -253,27 +256,36 @@ static int update_local_ref(struct ref *ref,
|
||||||
what = "[new branch]";
|
what = "[new branch]";
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(display, "* %-*s %-*s -> %s", SUMMARY_WIDTH, what,
|
r = s_update_ref(msg, ref, 0);
|
||||||
REFCOL_WIDTH, remote, pretty_ref);
|
sprintf(display, "%c %-*s %-*s -> %s%s", r ? '!' : '*',
|
||||||
return s_update_ref(msg, ref, 0);
|
SUMMARY_WIDTH, what, REFCOL_WIDTH, remote, pretty_ref,
|
||||||
|
r ? " (unable to update local ref)" : "");
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_merge_bases(current, &updated, 1)) {
|
if (in_merge_bases(current, &updated, 1)) {
|
||||||
char quickref[83];
|
char quickref[83];
|
||||||
|
int r;
|
||||||
strcpy(quickref, find_unique_abbrev(current->object.sha1, DEFAULT_ABBREV));
|
strcpy(quickref, find_unique_abbrev(current->object.sha1, DEFAULT_ABBREV));
|
||||||
strcat(quickref, "..");
|
strcat(quickref, "..");
|
||||||
strcat(quickref, find_unique_abbrev(ref->new_sha1, DEFAULT_ABBREV));
|
strcat(quickref, find_unique_abbrev(ref->new_sha1, DEFAULT_ABBREV));
|
||||||
sprintf(display, " %-*s %-*s -> %s", SUMMARY_WIDTH, quickref,
|
r = s_update_ref("fast forward", ref, 1);
|
||||||
REFCOL_WIDTH, remote, pretty_ref);
|
sprintf(display, "%c %-*s %-*s -> %s%s", r ? '!' : ' ',
|
||||||
return s_update_ref("fast forward", ref, 1);
|
SUMMARY_WIDTH, quickref, REFCOL_WIDTH, remote,
|
||||||
|
pretty_ref, r ? " (unable to update local ref)" : "");
|
||||||
|
return r;
|
||||||
} else if (force || ref->force) {
|
} else if (force || ref->force) {
|
||||||
char quickref[84];
|
char quickref[84];
|
||||||
|
int r;
|
||||||
strcpy(quickref, find_unique_abbrev(current->object.sha1, DEFAULT_ABBREV));
|
strcpy(quickref, find_unique_abbrev(current->object.sha1, DEFAULT_ABBREV));
|
||||||
strcat(quickref, "...");
|
strcat(quickref, "...");
|
||||||
strcat(quickref, find_unique_abbrev(ref->new_sha1, DEFAULT_ABBREV));
|
strcat(quickref, find_unique_abbrev(ref->new_sha1, DEFAULT_ABBREV));
|
||||||
sprintf(display, "+ %-*s %-*s -> %s (forced update)",
|
r = s_update_ref("forced-update", ref, 1);
|
||||||
SUMMARY_WIDTH, quickref, REFCOL_WIDTH, remote, pretty_ref);
|
sprintf(display, "%c %-*s %-*s -> %s (%s)", r ? '!' : '+',
|
||||||
return s_update_ref("forced-update", ref, 1);
|
SUMMARY_WIDTH, quickref, REFCOL_WIDTH, remote,
|
||||||
|
pretty_ref,
|
||||||
|
r ? "unable to update local ref" : "forced update");
|
||||||
|
return r;
|
||||||
} else {
|
} else {
|
||||||
sprintf(display, "! %-*s %-*s -> %s (non fast forward)",
|
sprintf(display, "! %-*s %-*s -> %s (non fast forward)",
|
||||||
SUMMARY_WIDTH, "[rejected]", REFCOL_WIDTH, remote,
|
SUMMARY_WIDTH, "[rejected]", REFCOL_WIDTH, remote,
|
||||||
|
|
Loading…
Reference in a new issue