Function: projectile-project-vcs
projectile-project-vcs is a byte-compiled function defined in
projectile.el.
Signature
(projectile-project-vcs &optional PROJECT-ROOT)
Documentation
Determine the VCS used by the project if any.
PROJECT-ROOT is the targeted directory. If nil, use
the variable projectile-project-root(var)/projectile-project-root(fun).
Results are cached in projectile-project-vcs-cache (cleared by
projectile-invalidate-cache).
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile-project-vcs (&optional project-root)
"Determine the VCS used by the project if any.
PROJECT-ROOT is the targeted directory. If nil, use
the variable `projectile-project-root'.
Results are cached in `projectile-project-vcs-cache' (cleared by
`projectile-invalidate-cache')."
(or project-root (setq project-root (projectile-acquire-root)))
(let ((cached (gethash project-root projectile-project-vcs-cache 'unset)))
(if (not (eq cached 'unset))
cached
(let ((vcs (or
;; first we check for a VCS marker in the project root itself
(projectile--vcs-from-directory-listing project-root)
;; then we check if there's a VCS marker up the directory tree
;; that covers the case when a project is part of a
;; multi-project repository - in those cases you can still
;; use the VCS to get a list of files for the project in
;; question. All markers are checked together via a single
;; predicate so each ancestor directory is listed at most
;; once instead of up to 10 times.
(let ((found nil))
(projectile-locate-dominating-file
project-root
(lambda (dir)
(setq found (projectile--vcs-from-directory-listing dir))))
found)
'none)))
(puthash project-root vcs projectile-project-vcs-cache)
vcs))))