Tags: madeof:bits, git
TIL, from a conversation with friends1, that git status
can indeed have side effects, of some sort.
By default, running git status
causes a background refresh of the
index to happen, which holds the write lock on the repository.
In theory, if somebody is really unlucky, this could break some script /
process that is also trying to work on the repo at the same time,
especially on a huge repository where git status
takes a significant
time, rather than the usual fraction of a second2.
There is a way to prevent this, by running git status --no-optional-locks
(https://git-scm.com/docs/git#Documentation/git.txt---no-optional-locks)
or by setting GIT_OPTIONAL_LOCKS
to 0
, as writing the updated
index is just an optimization and git knows it can be avoided.
I don’t think there are many chances to actually stumble on this in the real life, but I’m writing this down so that if I ever do I have an easy way to remember what happened and find the solution.
I won’t name name or provide details to protect the innocents (and the guilty), but thanks to all of the people involved in the conversations who helped find the answer.↩︎
Related, but unrelated TIL: there is a place called Secondo (second), near Venice, but it’s already a frazione (fraction / subdivision of municipality).↩︎