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'.
(let ((files (vc-git-dir-status-state->files git-state))
(allowed-exit 1))
(erase-buffer)
(pcase (vc-git-dir-status-state->stage git-state)
('update-index
(if files
(progn (vc-git-command (current-buffer) 'async files
"add" "--refresh" "--")
;; git-add exits 128 if some of FILES are untracked;
;; we can ignore that (bug#79999).
(setq allowed-exit 128))
(vc-git-command (current-buffer) 'async nil
"update-index" "--refresh")))
('ls-files-added
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-c" "-s" "--"))
('ls-files-up-to-date
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-c" "-s" "--"))
('ls-files-conflict
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-u" "--"))
('ls-files-missing
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-d" "--"))
('ls-files-unknown
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-o" "--exclude-standard" "--"))
('ls-files-ignored
(vc-git-command (current-buffer) 'async files
"ls-files" "-z" "-o" "-i" "--directory"
"--no-empty-directory" "--exclude-standard" "--"))
;; --relative added in Git 1.5.5.
('diff-index
(vc-git-command (current-buffer) 'async files
"diff-index" "--relative" "-z" "-M" "HEAD" "--")))
(vc-run-delayed-success allowed-exit
(vc-git-after-dir-status-stage git-state))))