summaryrefslogtreecommitdiff
path: root/elpa/magit-20200728.45/magit-gitignore.el
diff options
context:
space:
mode:
authorBlendoit <blendoit@gmail.com>2020-08-01 15:24:03 -0700
committerBlendoit <blendoit@gmail.com>2020-08-01 15:24:03 -0700
commite47650852b8aa4da6d0b0cea3b5421955795cc64 (patch)
tree2535f7cc4fa4b5c25bbd46f9523da5944b76e201 /elpa/magit-20200728.45/magit-gitignore.el
parent374ae3de24187512adddf01a56e5eb52c79db65f (diff)
Definitely /not/ including elpa/, that would be chaos.
Diffstat (limited to 'elpa/magit-20200728.45/magit-gitignore.el')
-rw-r--r--elpa/magit-20200728.45/magit-gitignore.el197
1 files changed, 0 insertions, 197 deletions
diff --git a/elpa/magit-20200728.45/magit-gitignore.el b/elpa/magit-20200728.45/magit-gitignore.el
deleted file mode 100644
index 6004413..0000000
--- a/elpa/magit-20200728.45/magit-gitignore.el
+++ /dev/null
@@ -1,197 +0,0 @@
-;;; magit-gitignore.el --- intentionally untracked files -*- lexical-binding: t -*-
-
-;; Copyright (C) 2008-2020 The Magit Project Contributors
-;;
-;; You should have received a copy of the AUTHORS.md file which
-;; lists all contributors. If not, see http://magit.vc/authors.
-
-;; Author: Jonas Bernoulli <jonas@bernoul.li>
-;; Maintainer: Jonas Bernoulli <jonas@bernoul.li>
-
-;; Magit is free software; you can redistribute it and/or modify it
-;; under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-;;
-;; Magit is distributed in the hope that it will be useful, but WITHOUT
-;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-;; License for more details.
-;;
-;; You should have received a copy of the GNU General Public License
-;; along with Magit. If not, see http://www.gnu.org/licenses.
-
-;;; Commentary:
-
-;; This library implements gitignore commands.
-
-;;; Code:
-
-(eval-when-compile
- (require 'subr-x))
-
-(require 'magit)
-
-;;; Transient
-
-;;;###autoload (autoload 'magit-gitignore "magit-gitignore" nil t)
-(transient-define-prefix magit-gitignore ()
- "Instruct Git to ignore a file or pattern."
- :man-page "gitignore"
- ["Gitignore"
- ("t" "shared at toplevel (.gitignore)"
- magit-gitignore-in-topdir)
- ("s" "shared in subdirectory (path/to/.gitignore)"
- magit-gitignore-in-subdir)
- ("p" "privately (.git/info/exclude)"
- magit-gitignore-in-gitdir)
- ("g" magit-gitignore-on-system
- :if (lambda () (magit-get "core.excludesfile"))
- :description (lambda ()
- (format "privately for all repositories (%s)"
- (magit-get "core.excludesfile"))))]
- ["Skip worktree"
- (7 "w" "do skip worktree" magit-skip-worktree)
- (7 "W" "do not skip worktree" magit-no-skip-worktree)]
- ["Assume unchanged"
- (7 "u" "do assume unchanged" magit-assume-unchanged)
- (7 "U" "do not assume unchanged" magit-no-assume-unchanged)])
-
-;;; Gitignore Commands
-
-;;;###autoload
-(defun magit-gitignore-in-topdir (rule)
- "Add the Git ignore RULE to the top-level \".gitignore\" file.
-Since this file is tracked, it is shared with other clones of the
-repository. Also stage the file."
- (interactive (list (magit-gitignore-read-pattern)))
- (magit-with-toplevel
- (magit--gitignore rule ".gitignore")
- (magit-run-git "add" ".gitignore")))
-
-;;;###autoload
-(defun magit-gitignore-in-subdir (rule directory)
- "Add the Git ignore RULE to a \".gitignore\" file.
-Prompted the user for a directory and add the rule to the
-\".gitignore\" file in that directory. Since such files are
-tracked, they are shared with other clones of the repository.
-Also stage the file."
- (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" file))))
-
-;;;###autoload
-(defun magit-gitignore-in-gitdir (rule)
- "Add the Git ignore RULE to \"$GIT_DIR/info/exclude\".
-Rules in that file only affects this clone of the repository."
- (interactive (list (magit-gitignore-read-pattern)))
- (magit--gitignore rule (magit-git-dir "info/exclude"))
- (magit-refresh))
-
-;;;###autoload
-(defun magit-gitignore-on-system (rule)
- "Add the Git ignore RULE to the file specified by `core.excludesFile'.
-Rules that are defined in that file affect all local repositories."
- (interactive (list (magit-gitignore-read-pattern)))
- (magit--gitignore rule
- (or (magit-get "core.excludesFile")
- (error "Variable `core.excludesFile' isn't set")))
- (magit-refresh))
-
-(defun magit--gitignore (rule file)
- (when-let ((directory (file-name-directory file)))
- (make-directory directory t))
- (with-temp-buffer
- (when (file-exists-p file)
- (insert-file-contents file))
- (goto-char (point-max))
- (unless (bolp)
- (insert "\n"))
- (insert (replace-regexp-in-string "\\(\\\\*\\)" "\\1\\1" rule))
- (insert "\n")
- (write-region nil nil file)))
-
-(defun magit-gitignore-read-pattern ()
- (let* ((default (magit-current-file))
- (base (car magit-buffer-diff-files))
- (base (and base (file-directory-p base) base))
- (choices
- (delete-dups
- (--mapcat
- (cons (concat "/" it)
- (when-let ((ext (file-name-extension it)))
- (list (concat "/" (file-name-directory it) "*." ext)
- (concat "*." ext))))
- (sort (nconc
- (magit-untracked-files nil base)
- ;; The untracked section of the status buffer lists
- ;; directories containing only untracked files.
- ;; Add those as candidates.
- (-filter #'directory-name-p
- (magit-list-files
- "--other" "--exclude-standard" "--directory"
- "--no-empty-directory" "--" base)))
- #'string-lessp)))))
- (when default
- (setq default (concat "/" default))
- (unless (member default choices)
- (setq default (concat "*." (file-name-extension default)))
- (unless (member default choices)
- (setq default nil))))
- (magit-completing-read "File or pattern to ignore"
- choices nil nil nil nil default)))
-
-;;; Skip Worktree Commands
-
-;;;###autoload
-(defun magit-skip-worktree (file)
- "Call \"git update-index --skip-worktree -- FILE\"."
- (interactive
- (list (magit-read-file-choice "Skip worktree for"
- (magit-with-toplevel
- (cl-set-difference
- (magit-list-files)
- (magit-skip-worktree-files))))))
- (magit-with-toplevel
- (magit-run-git "update-index" "--skip-worktree" "--" file)))
-
-;;;###autoload
-(defun magit-no-skip-worktree (file)
- "Call \"git update-index --no-skip-worktree -- FILE\"."
- (interactive
- (list (magit-read-file-choice "Do not skip worktree for"
- (magit-with-toplevel
- (magit-skip-worktree-files)))))
- (magit-with-toplevel
- (magit-run-git "update-index" "--no-skip-worktree" "--" file)))
-
-;;; Assume Unchanged Commands
-
-;;;###autoload
-(defun magit-assume-unchanged (file)
- "Call \"git update-index --assume-unchanged -- FILE\"."
- (interactive
- (list (magit-read-file-choice "Assume file to be unchanged"
- (magit-with-toplevel
- (cl-set-difference
- (magit-list-files)
- (magit-assume-unchanged-files))))))
- (magit-with-toplevel
- (magit-run-git "update-index" "--assume-unchanged" "--" file)))
-
-;;;###autoload
-(defun magit-no-assume-unchanged (file)
- "Call \"git update-index --no-assume-unchanged -- FILE\"."
- (interactive
- (list (magit-read-file-choice "Do not assume file to be unchanged"
- (magit-with-toplevel
- (magit-assume-unchanged-files)))))
- (magit-with-toplevel
- (magit-run-git "update-index" "--no-assume-unchanged" "--" file)))
-
-;;; _
-(provide 'magit-gitignore)
-;;; magit-gitignore.el ends here
Copyright 2019--2024 Marius PETER