branch: externals/vc-jj
commit f8563a006db706dfd2613d3281ec3d3e177f3663
Author: Rudi Schlatte <r...@constantly.at>
Commit: Rudi Schlatte <r...@constantly.at>

    Tell jj about ignored files
    
    We need to modify .gitignore and also call `jj file untrack` or `jj
    file track` as needed.
---
 vc-jj.el | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git a/vc-jj.el b/vc-jj.el
index 517faeb20c..dd69e008e8 100644
--- a/vc-jj.el
+++ b/vc-jj.el
@@ -218,9 +218,25 @@ self.hidden(), \"\\n\"
 (defalias 'vc-jj-responsible-p #'vc-jj-root)
 
 (defun vc-jj-find-ignore-file (file)
-  (expand-file-name ".gitignore"
-                           (vc-jj-root file)))
-
+  "Return the .gitignore file that controls FILE.
+Currently we return the .gitignore file at project root instead
+of checking for per-directory .gitignore files."
+  (expand-file-name ".gitignore" (vc-jj-root file)))
+
+(defun vc-jj-ignore (file &optional directory remove)
+  "Ignore FILE under DIRECTORY (default is `default-directory').
+FILE is a wildcard specification relative to DIRECTORY.  If
+REMOVE is non-nil, remove FILE from ignored files instead.
+
+For jj, modify `.gitignore' and call `jj untrack' or `jj track'."
+  (let ((ignore (vc-jj-find-ignore-file file)))
+    (cond
+     (remove
+      (vc--remove-regexp (concat "^" (regexp-quote file) "\\(\n\\|$\\)") 
ignore)
+      (call-process "jj" nil (list t nil) nil "file" "track" file))
+     (t
+      (vc--add-line file ignore)
+      (call-process "jj" nil (list t nil) nil "file" "untrack" file)))))
 
 (defvar vc-jj-diff-switches '("--git"))
 

Reply via email to