Re: emacs-31 a9fc13614ec: Export GIT_OPTIONAL_LOCKS=0 for "git status" invocations (bug#80903)
Sean Whitton <[email protected]> Sat, 01 Aug 2026 14:43:37 +0100
| Newsgroups | gmane.emacs.devel |
|---|---|
| Message-ID | <[email protected]> |
Eli Zaretskii [01/Aug 9:06am +03] wrote: >> From: [email protected] >> Date: Fri, 31 Jul 2026 12:00:15 -0400 >> >> branch: emacs-31 >> commit a9fc13614eca8aaa34d227b28c4c4d37b13212af >> Author: Sean Whitton <[email protected]> >> Commit: Sean Whitton <[email protected]> >> >> Export GIT_OPTIONAL_LOCKS=0 for "git status" invocations (bug#80903) >> >> * lisp/vc/vc-git.el (vc-git--env-vars): New function. >> (vc-git-command, vc-git--call): Use it (bug#80903). >> --- >> lisp/vc/vc-git.el | 39 +++++++++++++++++++-------------------- >> 1 file changed, 19 insertions(+), 20 deletions(-) >> >> diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el >> index f336aae984d..17c358e25d5 100644 >> --- a/lisp/vc/vc-git.el >> +++ b/lisp/vc/vc-git.el >> @@ -2884,6 +2884,21 @@ page for the meanings of these attributes." >> >> ;;; Internal commands >> >> +(defun vc-git--env-vars (subcommand) >> + "Return env vars for the `process-environment' of Git processes." >> + `("GIT_DIR" >> + ,@(and vc-git-use-literal-pathspecs >> + '("GIT_LITERAL_PATHSPECS=1")) >> + ;; Avoid optional repository locking during background operations >> + ;; (bug#21559, bug#80903). Skipping these locks is always safe and >> + ;; can only lead to subsequent commands running more slowly. >> + ;; The "git status" case covers how `vc-checkin' uses >> + ;; `vc-dir-resynch-file' to update the display state of files >> + ;; undergoing an asynchronous check-in. >> + ,@(and (or revert-buffer-in-progress >> + (equal subcommand "status")) >> + '("GIT_OPTIONAL_LOCKS=0")))) > > GIT_OPTIONAL_LOCKS is supported only since Git 2.15. Would it be > possible to use the --no-optional-locks command-line option instead? That would be a riskier change because setting an env var doesn't disrupt the rest of argument parsing, as compared with passing a new argument. Git 2.15 is almost nine years old. Perhaps it's okay if asynchronous check-ins (an optional feature) occasionally fail due to a race? -- Sean Whitton