From c799337f12e84b4ca88f509ecea3a7e55ff4c768 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Fri, 3 Oct 2014 17:15:05 +0400 Subject: [PATCH] Fix vc-svn-ignore * lisp/vc/vc-svn.el (vc-svn-ignore-completion-table): Implement. (vc-svn-ignore): Use it. Fixes: debbugs:18619 --- lisp/ChangeLog | 5 +++++ lisp/vc/vc-svn.el | 21 +++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a2f8ba55ceb..40faa8a43fe 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-10-03 Dmitry Gutov + + * vc/vc-svn.el (vc-svn-ignore-completion-table): Implement. + (vc-svn-ignore): Use it. (Bug#18619) + 2014-10-03 Martin Rudalics * frame.el (toggle-frame-maximized, toggle-frame-fullscreen): diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index a336a952df1..c7568e456f5 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -354,14 +354,23 @@ This is only possible if SVN is responsible for FILE's directory.") (concat "-r" rev)) (vc-switches 'SVN 'checkout)))) -(defun vc-svn-ignore (file &optional _directory _remove) +(defun vc-svn-ignore (file &optional directory remove) "Ignore FILE under Subversion. FILE is a file wildcard, relative to the root directory of DIRECTORY." - (vc-svn-command t 0 file "propedit" "svn:ignore")) - -(defun vc-svn-ignore-completion-table (_file) - "Return the list of ignored files." - ) + (let* ((ignores (vc-svn-ignore-completion-table directory)) + (file (file-relative-name file directory)) + (ignores (if remove + (delete file ignores) + (push file ignores)))) + (vc-svn-command nil 0 nil nil "propset" "svn:ignore" + (mapconcat #'identity ignores "\n") + (expand-file-name directory)))) + +(defun vc-svn-ignore-completion-table (directory) + "Return the list of ignored files in DIRECTORY." + (with-temp-buffer + (vc-svn-command t t nil "propget" "svn:ignore" (expand-file-name directory)) + (split-string (buffer-string)))) (defun vc-svn-find-admin-dir (file) "Return the administrative directory of FILE." -- 2.39.2