diff options
| author | Jonas Bernoulli <jonas@bernoul.li> | 2026-03-31 22:45:33 +0200 |
|---|---|---|
| committer | Jonas Bernoulli <jonas@bernoul.li> | 2026-03-31 22:45:33 +0200 |
| commit | be79ca2fbd722668438466c449383251913b59a7 (patch) | |
| tree | 3acfd4f7d81048bb964fdd0abc061ca6639b6ffe | |
| parent | 3e54579995cb0a58d57ab2b0a76ea0f5cbf656cc (diff) | |
magit--gitignore: Take care of staging and/or refreshing
| -rw-r--r-- | lisp/magit-gitignore.el | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/lisp/magit-gitignore.el b/lisp/magit-gitignore.el index 942f3b1..141b2ab 100644 --- a/lisp/magit-gitignore.el +++ b/lisp/magit-gitignore.el @@ -55,9 +55,7 @@ Since this file is tracked, it is shared with other clones of the repository. Also stage the file." :description "shared at toplevel (.gitignore)" (interactive (list (magit-gitignore-read-pattern))) - (magit-with-toplevel - (magit--gitignore rule ".gitignore") - (magit-run-git "add" ".gitignore"))) + (magit--gitignore rule (expand-file-name ".gitignore" (magit-toplevel)) t)) ;;;###autoload(autoload 'magit-gitignore-in-subdir "magit-gitignore" nil t) (transient-define-suffix magit-gitignore-in-subdir (rule directory) @@ -69,10 +67,7 @@ Also stage the file." :description "shared in subdirectory (path/to/.gitignore)" (interactive (list (magit-gitignore-read-pattern) (read-directory-name "Limit rule to files in: "))) - (magit-with-toplevel - (let ((file (expand-file-name ".gitignore" directory))) - (magit--gitignore rule file) - (magit-run-git "add" (magit-convert-filename-for-git file))))) + (magit--gitignore rule (expand-file-name ".gitignore" directory) t)) ;;;###autoload(autoload 'magit-gitignore-in-gitdir "magit-gitignore" nil t) (transient-define-suffix magit-gitignore-in-gitdir (rule) @@ -80,8 +75,7 @@ Also stage the file." Rules in that file only affects this clone of the repository." :description "privately (.git/info/exclude)" (interactive (list (magit-gitignore-read-pattern))) - (magit--gitignore rule (expand-file-name "info/exclude" (magit-gitdir))) - (magit-refresh)) + (magit--gitignore rule (expand-file-name "info/exclude" (magit-gitdir)))) ;;;###autoload(autoload 'magit-gitignore-on-system "magit-gitignore" nil t) (transient-define-suffix magit-gitignore-on-system (rule) @@ -92,12 +86,11 @@ Rules that are defined in that file affect all local repositories." (or (magit-get "core.excludesfile") "core.excludesfile is not set")) (interactive (list (magit-gitignore-read-pattern))) - (magit--gitignore rule - (or (magit-get "core.excludesFile") - (error "Variable `core.excludesFile' isn't set"))) - (magit-refresh)) + (if-let ((file (magit-get "core.excludesFile"))) + (magit--gitignore rule file) + (error "Variable `core.excludesFile' isn't set"))) -(defun magit--gitignore (rule file) +(defun magit--gitignore (rule file &optional stage) (when$ (file-name-directory file) (make-directory $ t)) (with-temp-buffer @@ -108,7 +101,11 @@ Rules that are defined in that file affect all local repositories." (insert "\n")) (insert (replace-regexp-in-string "\\(\\\\*\\)" "\\1\\1" rule)) (insert "\n") - (write-region nil nil file))) + (write-region nil nil file)) + (if stage + (magit-with-toplevel + (magit-run-git "add" (magit-convert-filename-for-git file))) + (magit-refresh))) (defun magit-gitignore-read-pattern () (let* ((default (magit-current-file)) |
