Function: cvs-mode-imerge
cvs-mode-imerge is an interactive and byte-compiled function defined
in pcvs.el.gz.
Signature
(cvs-mode-imerge)
Documentation
Merge interactively appropriate revisions of the selected file.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/vc/pcvs.el.gz
;; FIXME: The user should be able to specify ancestor/head/backup and we should
;; provide sensible defaults when merge info is unavailable (rather than rely
;; on smerge-ediff). Also provide sane defaults for need-merge files.
(defun-cvs-mode cvs-mode-imerge ()
"Merge interactively appropriate revisions of the selected file."
(interactive)
(let ((fi (cvs-mode-marked 'merge nil :one t :file t)))
(let ((merge (cvs-fileinfo->merge fi))
(file (cvs-fileinfo->full-name fi))
(backup-file (cvs-fileinfo->backup-file fi)))
(if (not (and merge backup-file))
(let ((buf (find-file-noselect file)))
(message "Missing merge info or backup file, using VC.")
(with-current-buffer buf
(smerge-ediff)))
(let* ((ancestor-buf (cvs-retrieve-revision fi (car merge)))
(head-buf (cvs-retrieve-revision fi (cdr merge)))
(backup-buf (let ((auto-mode-alist nil))
(find-file-noselect backup-file)))
;; this binding is used by cvs-ediff-startup-hook
(cvs-transient-buffers (list ancestor-buf backup-buf head-buf)))
(with-current-buffer backup-buf
(let ((buffer-file-name (expand-file-name file)))
(after-find-file)))
(funcall (cdr cvs-idiff-imerge-handlers)
backup-buf head-buf ancestor-buf file))))))