@matheusbsbs / matheus-bagliano / commits / 928323af6b
Fork 0

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 ()