Function: vc-git-dir-status-goto-stage
vc-git-dir-status-goto-stage is a byte-compiled function defined in
vc-git.el.gz.
Signature
(vc-git-dir-status-goto-stage GIT-STATE)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-git.el.gz
(defun vc-git-dir-status-goto-stage (git-state)
;; TODO: Look into reimplementing this using `git status --porcelain=v2'.
(require 'vc-dir)
(cl-flet ((git-cmd (&rest args)
(set-process-query-on-exit-flag
(apply #'vc-git-command (current-buffer) 'async args)
nil)))
(let ((files (vc-git-dir-status-state->files git-state))
(allowed-exit 1)
(limit vc-dir-process-output-limit))
(erase-buffer)
(pcase (vc-git-dir-status-state->stage git-state)
('update-index
(if files
(progn (git-cmd files "add" "--refresh" "--")
;; git-add exits 128 if some of FILES are untracked;
;; we can ignore that (bug#79999).
(setq allowed-exit 128))
(git-cmd nil "update-index" "--refresh")))
('ls-files-added
(git-cmd files "ls-files" "-z" "-c" "-s" "--"))
('ls-files-up-to-date
(git-cmd files "ls-files" "-z" "-c" "-s" "--"))
('ls-files-conflict
(git-cmd files "ls-files" "-z" "-u" "--"))
('ls-files-missing
(git-cmd files "ls-files" "-z" "-d" "--"))
('ls-files-unknown
(git-cmd files "ls-files" "-z" "-o" "--exclude-standard" "--"))
('ls-files-ignored
(git-cmd files "ls-files" "-z" "-o" "-i" "--directory"
"--no-empty-directory" "--exclude-standard" "--"))
;; --relative added in Git 1.5.5.
('diff-index
(git-cmd files "diff-index" "--relative" "-z" "-M" "HEAD" "--")))
(vc-run-delayed-success allowed-exit
(let ((vc-dir-process-output-limit limit))
(vc-dir-maybe-narrow-and-show-more-button
"(reported states may be incorrect)")
(vc-git-after-dir-status-stage git-state))))))