aboutsummaryrefslogtreecommitdiff
path: root/http-push.c
diff options
context:
space:
mode:
authorGrégoire Barbier <gb@gbarbier.org>2008-01-19 16:22:48 +0100
committerJunio C Hamano <gitster@pobox.com>2008-01-20 15:17:58 -0800
commit9bdbabade4303bb76d8115cb12470d229d7249e2 (patch)
tree19232b302110b21d05a977a08623cb376fc82b51 /http-push.c
parent9116de5957423d553fce5857a835284a0527d037 (diff)
downloadgit-9bdbabade4303bb76d8115cb12470d229d7249e2.tar.gz
git-9bdbabade4303bb76d8115cb12470d229d7249e2.tar.xz
http-push: fail when info/refs exists and is already locked
Failing instead of silently not updating remote refs makes the things clearer for the user when trying to push on a repository while another person do (or while a dandling locks are waiting for a 10 minutes timeout). When silently not updating remote refs, the user does not even know that git has pushed the objects but leaved the refs as they were before (e.g. a new bunch of commits on branch "master" is uploaded, however the branch by itsel still points on the previous head commit). Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'http-push.c')
-rw-r--r--http-push.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/http-push.c b/http-push.c
index 2c4e91d87..e1984d3a0 100644
--- a/http-push.c
+++ b/http-push.c
@@ -2243,6 +2243,11 @@ int main(int argc, char **argv)
info_ref_lock = lock_remote("info/refs", LOCK_TIME);
if (info_ref_lock)
remote->can_update_info_refs = 1;
+ else {
+ fprintf(stderr, "Error: cannot lock existing info/refs\n");
+ rc = 1;
+ goto cleanup;
+ }
}
if (remote->has_info_packs)
fetch_indices();