Re: git gc --auto aquires *.lock files that make a subsequent git-fetch error out
From: Jeff King <hidden>
Date: 2017-07-12 20:43:14
On Wed, Jul 12, 2017 at 10:30:25PM +0200, Ævar Arnfjörð Bjarmason wrote:
quoted
Is it really "in a row" that's a problem? The second fetch should not begin until the first one is done, including until its auto-gc exits. And even with background gc, we do the ref-locking operations first, due to 62aad1849 (gc --auto: do not lock refs in the background, 2014-05-25).quoted
I happen to run into this on a git.git which has a lot of remotes (most people on-list whose remotes I know about) and fetch them in parallel: $ git config alias.pfetch !parallel 'git fetch {}' ::: $(git remote)Ah, so it's not in a row. It's parallel. Then yes, you may run into problems with the gc locks conflicting with real operations. This isn't really unique to fetch. Any simultaneous operation can run into problems (e.g., on a busy server repo you may see conflicts between pack-refs and regular pushes).This is what I thought at first, and I've only encountered the issue in this parallel mode (mainly because it's tedious to reproduce). But I think the traces below show that it would happen with "git fetch --all" & "git remote update" as well, so the parallel invocations didn't matter. I.e. I'd just update my first remote, then git-gc would start in the background and lock refs for my other remotes, which I'd then fail to update.
No, it should be OK because of the commit I mentioned at the top of the quoted section. Each one runs sequentially. -Peff