diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-11-08 21:33:55 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-08 21:33:55 -0800 |
commit | bc9c0248a5cf184756ba562d6c452cace8863517 (patch) | |
tree | fac1220b800f9656c81ccc4b105a6f7626e850ce /builtin-send-pack.c | |
parent | 5fe9cd02c2639dbe4430fab6bc220d561b28aa93 (diff) | |
parent | 7c181d627c136cbc67ef0f722e74e34017e662f0 (diff) | |
download | git-bc9c0248a5cf184756ba562d6c452cace8863517.tar.gz |
Merge branch 'maint'
* maint:
GIT 1.6.0.4
Update RPM spec for the new location of git-cvsserver.
push: fix local refs update if already up-to-date
do not force write of packed refs
Conflicts:
builtin-revert.c
Diffstat (limited to 'builtin-send-pack.c')
-rw-r--r-- | builtin-send-pack.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/builtin-send-pack.c b/builtin-send-pack.c index 298bd71924..a9fdbf9d45 100644 --- a/builtin-send-pack.c +++ b/builtin-send-pack.c @@ -230,7 +230,7 @@ static void update_tracking_ref(struct remote *remote, struct ref *ref) { struct refspec rs; - if (ref->status != REF_STATUS_OK) + if (ref->status != REF_STATUS_OK && ref->status != REF_STATUS_UPTODATE) return; rs.src = ref->name; @@ -435,24 +435,19 @@ static int do_send_pack(int in, int out, struct remote *remote, const char *dest */ new_refs = 0; for (ref = remote_refs; ref; ref = ref->next) { - const unsigned char *new_sha1; - - if (!ref->peer_ref) { - if (!args.send_mirror) - continue; - new_sha1 = null_sha1; - } - else - new_sha1 = ref->peer_ref->new_sha1; + if (ref->peer_ref) + hashcpy(ref->new_sha1, ref->peer_ref->new_sha1); + else if (!args.send_mirror) + continue; - ref->deletion = is_null_sha1(new_sha1); + ref->deletion = is_null_sha1(ref->new_sha1); if (ref->deletion && !allow_deleting_refs) { ref->status = REF_STATUS_REJECT_NODELETE; continue; } if (!ref->deletion && - !hashcmp(ref->old_sha1, new_sha1)) { + !hashcmp(ref->old_sha1, ref->new_sha1)) { ref->status = REF_STATUS_UPTODATE; continue; } @@ -480,14 +475,13 @@ static int do_send_pack(int in, int out, struct remote *remote, const char *dest !ref->deletion && !is_null_sha1(ref->old_sha1) && (!has_sha1_file(ref->old_sha1) - || !ref_newer(new_sha1, ref->old_sha1)); + || !ref_newer(ref->new_sha1, ref->old_sha1)); if (ref->nonfastforward && !ref->force && !args.force_update) { ref->status = REF_STATUS_REJECT_NONFASTFORWARD; continue; } - hashcpy(ref->new_sha1, new_sha1); if (!ref->deletion) new_refs++; |