diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index aca29910b7d3..8f31fa168c23 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -223,7 +223,7 @@ Version Control Systems @cindex SRC @cindex src @item -SRC (src) is RCS, reloaded - a specialized version-control system +SRC (src) is RCS, reloaded---a specialized version-control system designed for single-file projects worked on by only one person. It allows multiple files with independent version-control histories to exist in one directory, and is thus particularly well suited for @@ -233,6 +233,22 @@ Version Control Systems supports almost all SRC operations. @end itemize +@defun vc-responsible-backend file +This function can be used to determine the responsible VC backend of +the given file path @var{file}. For example, if @code{emacs.c} is a +file tracked by git, @code{(vc-responsible-backend "emacs.c")} returns +@code{"Git"}. Note that if @var{file} is a symbolic link, +@code{vc-responsible-backend} will not resolve it---it always reports +the backend of the symbolic link file itself. Instead, to get the +backend VC of the file to which @var{file} refers, wrap @var{file} +with a symbolic link resolving function such as +@code{file-chase-links}: + +@smallexample +(vc-responsible-backend (file-chase-links "emacs.c")) +@end smallexample +@end defun + @node VCS Concepts @subsubsection Concepts of Version Control diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index ac020d095397..a1e4388f6e5c 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -959,7 +959,11 @@ vc-responsible-backend If FILE is already registered, return the backend of FILE. If FILE is not registered, then the first backend in `vc-handled-backends' that declares itself -responsible for FILE is returned." +responsible for FILE is returned. + +Note that if FILE is a symbolic link, it will not be resolved -- +it will report the responsible backend system for the symbolic +link itself." (or (and (not (file-directory-p file)) (vc-backend file)) (catch 'found ;; First try: find a responsible backend. If this is for registration,