30.2.5 VC-Aware Project Backend

This backend is part of Emacs and is enabled by default. (Other backends may need installation of add-on packages and their proper configuration.)

It determines the contents of the project based on the VCS repository’s configuration (if any), excluding the “ignored” files from the output.

It has some performance optimizations for listing the files with some of the popular VCS systems (currently Git and Mercurial).

User Option: project-vc-include-untracked

By default, files which are neither registered with nor ignored by the VCS are considered part of the project. Customize this variable to nil to change that.

User Option: project-vc-ignores

Using this variable you can add more ignore patterns to the project, to exclude more files from the project’s file listing. The value is a list of glob strings. They can match both regular files and directories. To anchor an entry to the project root, start it with ./. To match directories only, end it with /. When this variable has directory-local value, it will only be applied to the corresponding directory subtree.

User Option: project-vc-name

This variable allows you to change the automatically detected name of the project to a string of your choice. By default the name is the base name of its root directory.

User Option: project-vc-extra-root-markers

This variable allows you to set up detection of non-VC projects in this backend, and also to have some subdirectories detected as separate projects. The value is a list.

Each element is either a base file name or a glob pattern for such.

Example values: .dir-locals.el, package.json, requirements.txt, *.gemspec.