git/list[1] front-page[2] threads[3] people[4] search[5] about
 

ISSUE - Sequential execution failure - Lock auto created between git commands

From
YRYonatan Roth <yroth@paloaltonetworks.com>
Date
May 25, 2025, 14:13 UTC
Message-ID
<CAJR-fbZ4X1+gN75m2dUvocR6NkowLOZ9F26cjBy8w1qd181OoQ@mail.gmail.com>
Hi,
Using a script we run the following set of git commands:
git branch -a
git remote -v
git stash push --all --include-untracked
git checkout test_git_ver
git remote -v
git fetch
git status --branch --porcelain=v1 -u
git checkout test_git_ver_workspace

After upgrading the git version to - *2.47.2*, we started getting the following error:

error: cannot lock ref 'HEAD': Unable to create '.../.git/*HEAD.lock*': File exists.

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.
fatal: unable to update HEAD

Investigating the issue on our side, we found that the failure occurs when running the last command - git checkout test_git_ver_workspace.

As well, we noticed that after the "git fetch" command there is an *auto * *maintenance* execution, it looks like there was a change between git versions and now there is an additional flag *--detach *added to maintenance. Therefore, we suspect that as a result of git fetch a maintenance detached (background) process is created, running in parallel to the general script, creating a lock file that fails the script.

Attached trace logs.

This script was running for multiple versions without any issue, it looks like the changes introduce a *regression*.

Please assist in resolving the issue.

Best regards, Yonatan Roth Palo Alto Networks

Trace logs:
12:54:52.400869 run-command.c:666       trace: run_command: git rev-list --objects --stdin --not --exclude-hidden=fetch --all --quiet --alternate-refs
12:54:52.400936 run-command.c:758       trace: start_command: /usr/local/libexec/git-core/git rev-list --objects --stdin --not --exclude-hidden=fetch --all --quiet --alternate-refs
12:54:52.483329 run-command.c:1534      run_processes_parallel: preparing to run up to 1 tasks
12:54:52.483384 run-command.c:1561      run_processes_parallel: done
12:54:52.483395 run-command.c:666       trace: run_command: git maintenance run --auto --no-quiet --detach
12:54:52.483475 run-command.c:758       trace: start_command: /usr/local/libexec/git-core/git maintenance run --auto --no-quiet --detach
12:54:52.494826 git.c:479               trace: built-in: git maintenance run --auto --no-quiet --detach
Next: Patrick Steinhardt
Message 1 of 2 in “ISSUE - Sequential execution failure - Lock auto created between git commands”
  1. Yonatan RothMay 25, 2025
  2. Patrick SteinhardtMay 26, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.