changeset 106331:1c9648ddfd5e

(vc-git-registered): Call vc-git-root only once.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 30 Nov 2009 21:21:35 +0000
parents e72085f5ccf5
children a620dcf767e8
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 24 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Nov 30 21:08:25 2009 +0000
+++ b/lisp/ChangeLog	Mon Nov 30 21:21:35 2009 +0000
@@ -1,3 +1,7 @@
+2009-11-30  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc-git.el (vc-git-registered): Call vc-git-root only once.
+
 2009-11-30  Juri Linkov  <juri@jurta.org>
 
 	* misearch.el (multi-isearch-read-buffers): Move canonicalization
--- a/lisp/vc-git.el	Mon Nov 30 21:08:25 2009 +0000
+++ b/lisp/vc-git.el	Mon Nov 30 21:21:35 2009 +0000
@@ -144,26 +144,26 @@
 
 (defun vc-git-registered (file)
   "Check whether FILE is registered with git."
-  (when (vc-git-root file)
-    (with-temp-buffer
-      (let* (process-file-side-effects
-	     ;; do not use the `file-name-directory' here: git-ls-files
-	     ;; sometimes fails to return the correct status for relative
-	     ;; path specs. 
-	     ;; see also: http://marc.info/?l=git&m=125787684318129&w=2
-	     (dir (vc-git-root file))
-             (name (file-relative-name file dir))
-             (str (ignore-errors
-                    (when dir (cd dir))
-                    (vc-git--out-ok "ls-files" "-c" "-z" "--" name)
-                    ;; if result is empty, use ls-tree to check for deleted file
-                    (when (eq (point-min) (point-max))
-                      (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD" "--" name))
-                    (buffer-string))))
-        (and str
-             (> (length str) (length name))
-             (string= (substring str 0 (1+ (length name)))
-                      (concat name "\0")))))))
+  (let ((dir (vc-git-root file)))
+    (when dir
+      (with-temp-buffer
+	(let* (process-file-side-effects
+	       ;; Do not use the `file-name-directory' here: git-ls-files
+	       ;; sometimes fails to return the correct status for relative
+	       ;; path specs.
+	       ;; See also: http://marc.info/?l=git&m=125787684318129&w=2
+	       (name (file-relative-name file dir))
+	       (str (ignore-errors
+		     (cd dir)
+		     (vc-git--out-ok "ls-files" "-c" "-z" "--" name)
+		     ;; if result is empty, use ls-tree to check for deleted file
+		     (when (eq (point-min) (point-max))
+		       (vc-git--out-ok "ls-tree" "--name-only" "-z" "HEAD" "--" name))
+		     (buffer-string))))
+	  (and str
+	       (> (length str) (length name))
+	       (string= (substring str 0 (1+ (length name)))
+			(concat name "\0"))))))))
 
 (defun vc-git--state-code (code)
   "Convert from a string to a added/deleted/modified state."