Variable: projectile-project-root-files-bottom-up

projectile-project-root-files-bottom-up is a customizable variable defined in projectile.el.

Value

(".git" ".hg" ".fslckout" "_FOSSIL_" ".bzr" "_darcs" ".pijul" ".sl"
 ".jj")

Documentation

A list of files considered to mark the root of a project.

The bottommost (parentmost) match has precedence.

This list holds only VCS markers (plus whatever you add yourself). Per-language project manifests are deliberately *not* included, so an enclosing VC root wins over a manifest sitting in a subdirectory - the behavior most users and IDEs expect (the git repository is the project). In a polyglot or monorepo layout where you want a deeper subproject to win instead, drop a .projectile file in it; projectile-root-marked runs before projectile-root-bottom-up, so the marked subproject takes precedence over the outer VC root.

This variable was added, or its default value changed, in projectile version 0.11.0.

Source Code

;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defcustom projectile-project-root-files-bottom-up
  '(".git"        ; Git VCS root dir
    ".hg"         ; Mercurial VCS root dir
    ".fslckout"   ; Fossil VCS root dir
    "_FOSSIL_"    ; Fossil VCS root DB on Windows
    ".bzr"        ; Bazaar VCS root dir
    "_darcs"      ; Darcs VCS root dir
    ".pijul"      ; Pijul VCS root dir
    ".sl"         ; Sapling VCS root dir
    ".jj"         ; Jujutsu VCS root dir
    )
  "A list of files considered to mark the root of a project.
The bottommost (parentmost) match has precedence.

This list holds only VCS markers (plus whatever you add yourself).
Per-language project manifests are deliberately *not* included, so an
enclosing VC root wins over a manifest sitting in a subdirectory - the
behavior most users and IDEs expect (the git repository is the
project).  In a polyglot or monorepo layout where you want a deeper
subproject to win instead, drop a `.projectile' file in it;
`projectile-root-marked' runs before `projectile-root-bottom-up', so
the marked subproject takes precedence over the outer VC root."
  :group 'projectile
  :type '(repeat string)
  :package-version '(projectile . "0.11.0"))