[2/2] fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
diff mbox series

Message ID f8157985dc5d59331a80d3c6034644bc3f6d8881.1572740518.git.gitgitgadget@gmail.com
State New
Headers show
  • Fix locking issues with git fetch --multiple --jobs=<n> and fetch.writeCommitGraph
Related show

Commit Message

Johannes Schindelin via GitGitGadget Nov. 3, 2019, 12:21 a.m. UTC
From: Johannes Schindelin <johannes.schindelin@gmx.de>

When both `fetch.jobs` and `fetch.writeCommitGraph` is set, we currently
try to write the commit graph in each of the concurrent fetch jobs,
which frequently leads to error messages like this one:

fatal: Unable to create '.../.git/objects/info/commit-graphs/commit-graph-chain.lock': File exists.

Let's avoid this by holding off from writing the commit graph until all
fetch jobs are done.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
 builtin/fetch.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff mbox series

diff --git a/builtin/fetch.c b/builtin/fetch.c
index ba2a81c392..dc7dc303b1 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -1602,7 +1602,8 @@  static int fetch_multiple(struct string_list *list, int max_children)
 			return errcode;
-	argv_array_pushl(&argv, "fetch", "--append", "--no-auto-gc", NULL);
+	argv_array_pushl(&argv, "fetch", "--append", "--no-auto-gc",
+			"--no-write-commit-graph", NULL);
 	if (max_children != 1 && list->nr != 1) {