git.el: Check for existing buffers on revert.
Refuse to revert a file if it is modified in an existing buffer but not saved. On success, revert the buffers that contains the files that have been reverted. Signed-off-by: Alexandre Julliard <julliard@winehq.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Alexandre Julliard committed
Feb 7, 2008 at 13:51 UTC
928323af6b761e8b1c33ce98e67c2f56fd1b7997
1 file changed
+8
contrib/emacs/git.el
+8
@@ -1033,11 +1033,19 @@ Return the list of files that haven't been handled."
1033
('deleted (push (git-fileinfo->name info) modified))
1034
('unmerged (push (git-fileinfo->name info) modified))
1035
('modified (push (git-fileinfo->name info) modified))))
1036
+ ;; check if a buffer contains one of the files and isn't saved
1037
+ (dolist (file (append added modified))
1038
+ (let ((buffer (get-file-buffer file)))
1039
+ (when (and buffer (buffer-modified-p buffer))
1040
+ (error "Buffer %s is modified. Please kill or save modified buffers before reverting." (buffer-name buffer)))))
1041
(when added
1042
(apply #'git-call-process-env nil nil "update-index" "--force-remove" "--" added))
1043
(when modified
1044
(apply #'git-call-process-env nil nil "checkout" "HEAD" modified))
1045
(git-update-status-files (append added modified) 'uptodate)
1046
+ (dolist (file (append added modified))
1047
+ (let ((buffer (get-file-buffer file)))
1048
+ (when buffer (with-current-buffer buffer (revert-buffer t t t)))))
1049
(git-success-message "Reverted" (git-get-filenames files)))))
1050
1051
(defun git-resolve-file ()