all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Wolfgang Scherer <Wolfgang.Scherer@gmx.de>
To: 37217@debbugs.gnu.org
Subject: bug#37217: Acknowledgement ([PATCH] vc-default-ignore implementation is incorrect)
Date: Thu, 29 Aug 2019 17:44:23 +0200	[thread overview]
Message-ID: <96e5b707-0150-4deb-96eb-20e8cad14266@gmx.de> (raw)
In-Reply-To: <handler.37217.B.15670400118803.ack@debbugs.gnu.org>

[-- Attachment #1: Type: text/plain, Size: 88 bytes --]

A unit test showed, that the removal regexp was faulty. New version of patch attached.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-vc-default-ignore.patch --]
[-- Type: text/x-patch; name="0001-Fix-vc-default-ignore.patch", Size: 2044 bytes --]

From d2638e621c8da1f93345a5d87691b165d5a05569 Mon Sep 17 00:00:00 2001
From: Wolfgang Scherer <wolfgang.scherer@gmx.de>
Date: Thu, 29 Aug 2019 17:39:21 +0200
Subject: [PATCH] Fix vc-default-ignore

* lisp/vc/vc.el: (vc-default-ignore) Treat FILE parameter as relative
to DIRECTORY parameter.  Construct a file-path relative to directory
of ignore file.  When removing, use properly anchored regexp.  Remove
entire line, not just the match.
---
 lisp/vc/vc.el | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 4cac153..c982b02 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1417,17 +1417,22 @@ remove from the list of ignored files."

 (defun vc-default-ignore (backend file &optional directory remove)
   "Ignore FILE under the VCS of DIRECTORY (default is `default-directory').
-FILE is a file wildcard, relative to the root directory of DIRECTORY.
+FILE is a wildcard specification, either relative to
+DIRECTORY or absolute.
 When called from Lisp code, if DIRECTORY is non-nil, the
 repository to use will be deduced by DIRECTORY; if REMOVE is
 non-nil, remove FILE from ignored files.
 Argument BACKEND is the backend you are using."
   (let ((ignore
 	 (vc-call-backend backend 'find-ignore-file (or directory default-directory)))
-	(pattern (file-relative-name
-		  (expand-file-name file) (file-name-directory file))))
+	file-path root-dir pattern)
+    (setq file-path (expand-file-name file directory))
+    (setq root-dir (file-name-directory ignore))
+    (when (not (string= (substring file-path 0 (length root-dir)) root-dir))
+      (error "Ignore spec %s is not below project root %s" file-path root-dir))
+    (setq pattern (substring file-path (length root-dir)))
     (if remove
-	(vc--remove-regexp pattern ignore)
+	(vc--remove-regexp (concat "^" (regexp-quote pattern ) "\\(\n\\|$\\)") ignore)
       (vc--add-line pattern ignore))))

 (defun vc-default-ignore-completion-table (backend file)
--
2.7.4


  parent reply	other threads:[~2019-08-29 15:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-29  0:53 bug#37217: [PATCH] vc-default-ignore implementation is incorrect Wolfgang Scherer
     [not found] ` <handler.37217.B.15670400118803.ack@debbugs.gnu.org>
2019-08-29 15:44   ` Wolfgang Scherer [this message]
2019-09-15 13:06 ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=96e5b707-0150-4deb-96eb-20e8cad14266@gmx.de \
    --to=wolfgang.scherer@gmx.de \
    --cc=37217@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.