Skip to content

Commit

Permalink
git.el: Check for existing buffers on revert.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Alexandre Julliard authored and Junio C Hamano committed Feb 8, 2008
1 parent 76127b3 commit 928323a
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions contrib/emacs/git.el
Original file line number Diff line number Diff line change
Expand Up @@ -1033,11 +1033,19 @@ Return the list of files that haven't been handled."
('deleted (push (git-fileinfo->name info) modified))
('unmerged (push (git-fileinfo->name info) modified))
('modified (push (git-fileinfo->name info) modified))))
;; check if a buffer contains one of the files and isn't saved
(dolist (file (append added modified))
(let ((buffer (get-file-buffer file)))
(when (and buffer (buffer-modified-p buffer))
(error "Buffer %s is modified. Please kill or save modified buffers before reverting." (buffer-name buffer)))))
(when added
(apply #'git-call-process-env nil nil "update-index" "--force-remove" "--" added))
(when modified
(apply #'git-call-process-env nil nil "checkout" "HEAD" modified))
(git-update-status-files (append added modified) 'uptodate)
(dolist (file (append added modified))
(let ((buffer (get-file-buffer file)))
(when buffer (with-current-buffer buffer (revert-buffer t t t)))))
(git-success-message "Reverted" (git-get-filenames files)))))

(defun git-resolve-file ()
Expand Down

0 comments on commit 928323a

Please sign in to comment.