diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 05400523048..2a40539adeb 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -315,21 +315,31 @@ vc-git--state-code (defvar vc-git--program-version nil) +(connection-local-set-profile-variables + 'vc-git-connection-default-profile + '((vc-git--program-version . nil))) + +(connection-local-set-profiles + '(:application vc-git) + 'vc-git-connection-default-profile) + (defun vc-git--program-version () - (or vc-git--program-version - (let ((version-string - (vc-git--run-command-string nil "version"))) - (setq vc-git--program-version - (if (and version-string - ;; Some Git versions append additional strings - ;; to the numerical version string. E.g., Git - ;; for Windows appends ".windows.N", while Git - ;; for Mac appends " (Apple Git-N)". Capture - ;; numerical version and ignore the rest. - (string-match "git version \\([0-9][0-9.]+\\)" - version-string)) - (string-trim-right (match-string 1 version-string) "\\.") - "0"))))) + (with-connection-local-variables + (or vc-git--program-version + (let ((version-string + (vc-git--run-command-string nil "version"))) + (setq-connection-local + vc-git--program-version + (if (and version-string + ;; Some Git versions append additional strings + ;; to the numerical version string. E.g., Git + ;; for Windows appends ".windows.N", while Git + ;; for Mac appends " (Apple Git-N)". Capture + ;; numerical version and ignore the rest. + (string-match "git version \\([0-9][0-9.]+\\)" + version-string)) + (string-trim-right (match-string 1 version-string) "\\.") + "0")))))) (defun vc-git--git-path (&optional path) "Resolve .git/PATH for the current working tree.