]> git.ipfire.org Git - thirdparty/git.git/blobdiff - builtin/fetch.c
Merge branch 'ps/lockfile-cleanup-fix'
[thirdparty/git.git] / builtin / fetch.c
index eaab8056bf99e5a2478e7a7b134c44fd52758c47..5f06b21f8e97c5459fdb558302c5b9b95e99eee8 100644 (file)
@@ -223,17 +223,22 @@ static struct option builtin_fetch_options[] = {
        OPT_END()
 };
 
-static void unlock_pack(void)
+static void unlock_pack(unsigned int flags)
 {
        if (gtransport)
-               transport_unlock_pack(gtransport);
+               transport_unlock_pack(gtransport, flags);
        if (gsecondary)
-               transport_unlock_pack(gsecondary);
+               transport_unlock_pack(gsecondary, flags);
+}
+
+static void unlock_pack_atexit(void)
+{
+       unlock_pack(0);
 }
 
 static void unlock_pack_on_signal(int signo)
 {
-       unlock_pack();
+       unlock_pack(TRANSPORT_UNLOCK_PACK_IN_SIGNAL_HANDLER);
        sigchain_pop(signo);
        raise(signo);
 }
@@ -1329,7 +1334,7 @@ static int fetch_and_consume_refs(struct transport *transport,
        trace2_region_leave("fetch", "consume_refs", the_repository);
 
 out:
-       transport_unlock_pack(transport);
+       transport_unlock_pack(transport, 0);
        return ret;
 }
 
@@ -1978,7 +1983,7 @@ static int fetch_one(struct remote *remote, int argc, const char **argv,
                gtransport->server_options = &server_options;
 
        sigchain_push_common(unlock_pack_on_signal);
-       atexit(unlock_pack);
+       atexit(unlock_pack_atexit);
        sigchain_push(SIGPIPE, SIG_IGN);
        exit_code = do_fetch(gtransport, &rs);
        sigchain_pop(SIGPIPE);