:type '(repeat string)
:safe 'listp)
-(defcustom project-vc-project-files-backends '(Bzr Git Hg)
+(defcustom project-vc-project-files-backends '(Bzr Git Hg SVN)
"List of vc backends which should be used by `project-files'.
For projects using a backend in this list, `project-files' will
- The vc backends list tracked files whereas \"find\" lists
existing files.
-- The performance differs vastly. The Git backend list files
- very fast (and generally faster than \"find\") while the SVN
- backend does so by querying the remote subversion server, i.e.,
- it requires a network connection and is slow."
+- The performance differs depending on operating system,
+ filesystem, and hardware."
:type `(set ,@(mapcar (lambda (b) `(const :tag ,(format "%s" b) ,b))
vc-handled-backends))
:version "27.1")
(declare-function cl-remove-if "cl-seq")
-(defun vc-bzr-list-files (&optional dir _args)
+(defun vc-bzr-list-files (&optional dir)
(let ((default-directory (or dir default-directory)))
(mapcar
#'expand-file-name
(declare-function cl-remove-if "cl-seq")
-(defun vc-git-list-files (&optional dir _args)
+(defun vc-git-list-files (&optional dir)
(let ((default-directory (or dir default-directory)))
(mapcar
#'expand-file-name
(defun vc-hg-root (file)
(vc-find-root file ".hg"))
-(defun vc-hg-list-files (&optional dir _args)
+(defun vc-hg-list-files (&optional dir)
(let ((default-directory (or dir default-directory)))
(mapcar
#'expand-file-name
(declare-function cl-remove-if "cl-seq")
-(defun vc-svn-list-files (&optional dir _args)
- (let ((default-directory (or dir default-directory)))
- (mapcar
- #'expand-file-name
- (cl-remove-if #'string-empty-p
- (split-string
- (with-output-to-string
- (with-current-buffer standard-output
- (vc-svn-command t 0 "."
- "list" "--recursive")))
- "\n")))))
+(defun vc-svn-list-files (&optional dir)
+ (let ((default-directory (or dir default-directory))
+ files)
+ (with-temp-buffer
+ (vc-svn-command t 0 "."
+ "info" "--recursive"
+ "--show-item" "relative-url"
+ "--show-item" "kind")
+ (goto-char (point-min))
+ (message "%s" (buffer-string))
+ (while (re-search-forward "^file\s+\\(.*\\)$" nil t)
+ (setq files (cons (expand-file-name (match-string 1))
+ files))))
+ (nreverse files)))
(provide 'vc-svn)
\f
-(defun vc-default-list-files (_backend &optional dir _args)
+(defun vc-default-list-files (_backend &optional dir)
(let* ((default-directory (or dir default-directory))
(inhibit-message t)
files)