]> git.eshelyaron.com Git - emacs.git/commitdiff
vc-git-state: Bring back CentOS 6 compatibility
authorDmitry Gutov <dgutov@yandex.ru>
Mon, 1 May 2017 14:58:57 +0000 (17:58 +0300)
committerDmitry Gutov <dgutov@yandex.ru>
Mon, 1 May 2017 14:59:21 +0000 (17:59 +0300)
* lisp/vc/vc-git.el (vc-git-state):
Bring back CentOS 6 compatibility (bug#19343).

lisp/vc/vc-git.el

index 3761dd04b0f95343cfd5a701e782ac7e9cbca0b8..0e1c08c51ffeb80cdc913ef098e06d6bcf81d7aa 100644 (file)
@@ -268,9 +268,28 @@ in the order given by 'git status'."
 
 (defun vc-git-state (file)
   "Git-specific version of `vc-state'."
+  ;; FIXME: Still can't detect `ignored', see below, and returns
+  ;; `up-to-date' instead.  Which is rarely a problem because
+  ;; `vc-backend' returns nil for ignored files.
+  ;;
+  ;; It also can't set `needs-update' or `needs-merge'. The rough
+  ;; equivalent would be that upstream branch for current branch is in
+  ;; fast-forward state i.e. current branch is direct ancestor of
+  ;; corresponding upstream branch, and the file was modified
+  ;; upstream.  We'd need to check against the upstream tracking
+  ;; branch for that (an extra process call or two).
   (let ((status
          (vc-git--run-command-string file "status" "--porcelain" "-z"
-                                     "--untracked-files" "--ignored" "--")))
+                                     ;; Just to be explicit, it's the
+                                     ;; default anyway.
+                                     "--untracked-files"
+                                     ;; Requires Git 1.7.6.3 or so,
+                                     ;; so does not work in CentOS 6
+                                     ;; "--ignored"
+                                     "--")))
+    ;; Alternatively, the `ignored' state could be detected with 'git
+    ;; ls-files -i -o --exclude-standard', but that's an extra process
+    ;; call, and the `ignored' state is rarely needed.
     (if (null status)
         ;; If status is nil, there was an error calling git, likely because
         ;; the file is not in a git repo.