aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/vc/vc-git.el19
2 files changed, 18 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 799024ae422..a9cb5a519d0 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
12012-03-26 Ami Fischman <ami@fischman.org>
2
3 * vc/vc-git.el (vc-git-state): Avoid unnecessarily locking.
4
12012-03-26 Glenn Morris <rgm@gnu.org> 52012-03-26 Glenn Morris <rgm@gnu.org>
2 6
3 * files.el (save-buffers-kill-emacs): Doc fix. 7 * files.el (save-buffers-kill-emacs): Doc fix.
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 3ec32243796..bf7b7fb9e17 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -217,12 +217,21 @@ matching the resulting Git log output, and KEYWORDS is a list of
217 ;; operation. 217 ;; operation.
218 (if (not (vc-git-registered file)) 218 (if (not (vc-git-registered file))
219 'unregistered 219 'unregistered
220 (vc-git--call nil "add" "--refresh" "--" (file-relative-name file))
221 (let ((diff (vc-git--run-command-string 220 (let ((diff (vc-git--run-command-string
222 file "diff-index" "-z" "HEAD" "--"))) 221 file "diff-index" "-p" "--raw" "-z" "HEAD" "--")))
223 (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0" 222 (if (and diff
224 diff)) 223 (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0\\(\\(?:.\\|\n\\)*\\)\\'"
225 (vc-git--state-code (match-string 1 diff)) 224 diff))
225 (let ((diff-letter (match-string 1 diff))
226 (diff-contents (match-string 2 diff)))
227 (if (not (string-match "\n." diff-contents))
228 ;; Empty diff: file contents is the same as the HEAD
229 ;; revision, but timestamps are different (eg, file
230 ;; was "touch"ed). Update timestamp in index:
231 (prog1 'up-to-date
232 (vc-git--call nil "add" "--refresh" "--"
233 (file-relative-name file)))
234 (vc-git--state-code diff-letter)))
226 (if (vc-git--empty-db-p) 'added 'up-to-date))))) 235 (if (vc-git--empty-db-p) 'added 'up-to-date)))))
227 236
228(defun vc-git-working-revision (file) 237(defun vc-git-working-revision (file)