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))))))