Mercurial > emacs
changeset 82052:1776413f26d4
(vc-git-workfile-unchanged-p): Update comment.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Mon, 23 Jul 2007 15:02:16 +0000 |
parents | 36d7d91a135f |
children | 3cc1f1f9df04 |
files | lisp/ChangeLog lisp/vc-git.el |
diffstat | 2 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Mon Jul 23 08:26:29 2007 +0000 +++ b/lisp/ChangeLog Mon Jul 23 15:02:16 2007 +0000 @@ -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
--- a/lisp/vc-git.el Mon Jul 23 08:26:29 2007 +0000 +++ b/lisp/vc-git.el Mon Jul 23 15:02:16 2007 +0000 @@ -191,8 +191,20 @@ (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