Commit 4d3ac01e authored by Dan Nicolaescu's avatar Dan Nicolaescu
Browse files

(vc-git-workfile-unchanged-p): Update comment.

parent 56b32800
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> 2007-07-20 Kenichi Handa <handa@m17n.org>
* international/utf-8.el (utf-8-post-read-conversion): Temporarily * international/utf-8.el (utf-8-post-read-conversion): Temporarily
......
...@@ -191,8 +191,20 @@ ...@@ -191,8 +191,20 @@
(defun vc-git-checkout-model (file) (defun vc-git-checkout-model (file)
'implicit) 'implicit)
;; XXX Can't this just use the result of vc-git-state?
(defun vc-git-workfile-unchanged-p (file) (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" "--")) (let ((sha1 (vc-git--run-command-string file "hash-object" "--"))
(head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--"))) (head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--")))
(and head (and head
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment