]> git.eshelyaron.com Git - emacs.git/commitdiff
(vc-git-workfile-unchanged-p): Update comment.
authorDan Nicolaescu <dann@ics.uci.edu>
Mon, 23 Jul 2007 15:02:16 +0000 (15:02 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Mon, 23 Jul 2007 15:02:16 +0000 (15:02 +0000)
lisp/ChangeLog
lisp/vc-git.el

index 66ec40aadc76ee76f794db2192cf9b83b8a91197..c46ad1166bca5f01a48044f57217654cf307dd09 100644 (file)
@@ -1,3 +1,7 @@
+2007-07-23  Alexandre Julliard <julliard@winehq.org>
+
+       * vc-git.el (vc-git-workfile-unchanged-p): Update comment.
+
 2007-07-20  Kenichi Handa  <handa@m17n.org>
 
        * international/utf-8.el (utf-8-post-read-conversion): Temporarily
index df09fc5b8853b81ddc8d79936b22c7a9ff69bb5b..8b46c957cdf39f1a59900981652ea8a6be6ebd97 100644 (file)
 (defun vc-git-checkout-model (file)
   'implicit)
 
-;; XXX Can't this just use the result of vc-git-state?
 (defun vc-git-workfile-unchanged-p (file)
+  ;; The reason this does not use the result of vc-git-state is that
+  ;; git-diff-index (used by vc-git-state) doesn't refresh the cached
+  ;; stat info, so if the file has been modified it will always show
+  ;; up as modified in vc-git-state, even if the change has been
+  ;; undone, until git-update-index --refresh is run.
+  
+  ;; OTOH the vc-git-workfile-unchanged-p implementation checks the
+  ;; actual content, so it will detect the case of a file reverted
+  ;; back to its original state.
+
+  ;; The ideal implementation would be to refresh the stat cache and
+  ;; then call vc-git-state, but at the moment there's no git command
+  ;; to refresh a single file, so this will have to be added first.
   (let ((sha1 (vc-git--run-command-string file "hash-object" "--"))
         (head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--")))
     (and head