[PATCH v2 2/3] send-pack: check ref->status before updating tracking refs
- From
Jeff King <peff@peff.net>
- Date
- Nov 13, 2007, 11:36 UTC
- Message-ID
- <20071113113651.GB15880@sigill.intra.peff.net>
- In-Reply-To
- <20071113102500.GA2767@sigill.intra.peff.net>
Previously, we manually checked the 'NONE' and 'UPTODATE' conditions. Now that we have ref->status, we can easily say "only update if we pushed successfully".
Signed-off-by: Jeff King <peff@peff.net> --- builtin-send-pack.c | 15 ++++----------- 1 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/builtin-send-pack.c b/builtin-send-pack.c index c01a9c4..5c84766 100644 --- a/builtin-send-pack.c +++ b/builtin-send-pack.c @@ -180,24 +180,17 @@ static int receive_status(int in) static void update_tracking_ref(struct remote *remote, struct ref *ref) { struct refspec rs; - int will_delete_ref; - rs.src = ref->name; - rs.dst = NULL; - - if (!ref->peer_ref) + if (ref->status != REF_STATUS_OK) return; - will_delete_ref = is_null_sha1(ref->peer_ref->new_sha1); - - if (!will_delete_ref && - !hashcmp(ref->old_sha1, ref->peer_ref->new_sha1)) - return; + rs.src = ref->name; + rs.dst = NULL; if (!remote_find_tracking(remote, &rs)) { if (args.verbose) fprintf(stderr, "updating local tracking ref '%s'\n", rs.dst); - if (is_null_sha1(ref->peer_ref->new_sha1)) { + if (ref->deletion) { if (delete_ref(rs.dst, NULL)) error("Failed to delete"); } else
-- 1.5.3.5.1731.g0763