Page MenuHomePhabricator

When arc failed to amend the commit with the message, the message is lost
Closed, DuplicatePublic

Description

Description:

I ran into this scenario with Arcanist:

$ arc diff
Starting build (pass `--config unit.csharp.xunit.skip-build=true` to disable)...
Exception
Command failed with error #128!
COMMAND
git commit --amend --allow-empty -F "C:\Users\....\AppData\Local\Temp\b7lisnvxvxkokks0\402B90B.tmp"

STDOUT
(empty)

STDERR
fatal: Unable to create 'C:/Code/.../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

(Run with `--trace` for a full exception trace.)

When this happens, Arcanist doesn't save the message anywhere and the message is lost. I then have to retype it in the editor again.

Reproduction Steps:

  1. Have an Arcanist project / repository where you are about to run "arc diff".
  2. Run while [ 0 -eq 0 ]; do git status; done in another shell (this simulates IDEs which are excessively polling the Git working tree status).
  3. Observe Arcanist failing to run "git commit --amend"
  4. Run arc diff again, observe message lost.

Expected Results:

Message is there when I attempt arc diff again.

Actual Results:

Message is lost.

Version Information:
Arcanist: aeb374b3334891d436334ac382bb63e2e4620c95
libphutil: adb8a9c074ba41b9566d340db4e3599bcf097958