comparison lisp/vc-git.el @ 106220:a88a54e96796

vc-git-registered: use checkout directory (where .git is) rather than the file's directory and a relative path spec to work around a bug in git.
author David Reitter <david.reitter@gmail.com>
date Tue, 24 Nov 2009 15:31:01 +0000
parents 2f9ecf376c7a
children 1c9648ddfd5e
comparison
equal deleted inserted replaced
106219:16b061d2742d 106220:a88a54e96796
145 (defun vc-git-registered (file) 145 (defun vc-git-registered (file)
146 "Check whether FILE is registered with git." 146 "Check whether FILE is registered with git."
147 (when (vc-git-root file) 147 (when (vc-git-root file)
148 (with-temp-buffer 148 (with-temp-buffer
149 (let* (process-file-side-effects 149 (let* (process-file-side-effects
150 (dir (file-name-directory file)) 150 ;; do not use the `file-name-directory' here: git-ls-files
151 ;; sometimes fails to return the correct status for relative
152 ;; path specs.
153 ;; see also: http://marc.info/?l=git&m=125787684318129&w=2
154 (dir (vc-git-root file))
151 (name (file-relative-name file dir)) 155 (name (file-relative-name file dir))
152 (str (ignore-errors 156 (str (ignore-errors
153 (when dir (cd dir)) 157 (when dir (cd dir))
154 (vc-git--out-ok "ls-files" "-c" "-z" "--" name) 158 (vc-git--out-ok "ls-files" "-c" "-z" "--" name)
155 ;; if result is empty, use ls-tree to check for deleted file 159 ;; if result is empty, use ls-tree to check for deleted file