mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-03 08:30:09 +00:00
* vc/vc-git.el (vc-git-state): Avoid unnecessarily locking.
This commit is contained in:
parent
02243d9dc1
commit
c0bf77531e
@ -1,3 +1,7 @@
|
||||
2012-03-26 Ami Fischman <ami@fischman.org>
|
||||
|
||||
* vc/vc-git.el (vc-git-state): Avoid unnecessarily locking.
|
||||
|
||||
2012-03-26 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* files.el (save-buffers-kill-emacs): Doc fix.
|
||||
|
@ -217,12 +217,21 @@ matching the resulting Git log output, and KEYWORDS is a list of
|
||||
;; operation.
|
||||
(if (not (vc-git-registered file))
|
||||
'unregistered
|
||||
(vc-git--call nil "add" "--refresh" "--" (file-relative-name file))
|
||||
(let ((diff (vc-git--run-command-string
|
||||
file "diff-index" "-z" "HEAD" "--")))
|
||||
(if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0"
|
||||
diff))
|
||||
(vc-git--state-code (match-string 1 diff))
|
||||
file "diff-index" "-p" "--raw" "-z" "HEAD" "--")))
|
||||
(if (and diff
|
||||
(string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0\\(\\(?:.\\|\n\\)*\\)\\'"
|
||||
diff))
|
||||
(let ((diff-letter (match-string 1 diff))
|
||||
(diff-contents (match-string 2 diff)))
|
||||
(if (not (string-match "\n." diff-contents))
|
||||
;; Empty diff: file contents is the same as the HEAD
|
||||
;; revision, but timestamps are different (eg, file
|
||||
;; was "touch"ed). Update timestamp in index:
|
||||
(prog1 'up-to-date
|
||||
(vc-git--call nil "add" "--refresh" "--"
|
||||
(file-relative-name file)))
|
||||
(vc-git--state-code diff-letter)))
|
||||
(if (vc-git--empty-db-p) 'added 'up-to-date)))))
|
||||
|
||||
(defun vc-git-working-revision (file)
|
||||
|
Loading…
Reference in New Issue
Block a user