Function: emerge-revision-with-ancestor-internal
emerge-revision-with-ancestor-internal is a byte-compiled function
defined in emerge.el.gz.
Signature
(emerge-revision-with-ancestor-internal FILE REVISION-A REVISION-B ANCESTOR &optional STARTUP-HOOKS QUIT-HOOKS OUTPUT-FILE)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/emerge.el.gz
(defun emerge-revision-with-ancestor-internal (file revision-A revision-B
ancestor
&optional startup-hooks
quit-hooks output-file)
(let ((buffer-A (get-buffer-create (format "%s,%s" file revision-A)))
(buffer-B (get-buffer-create (format "%s,%s" file revision-B)))
(buffer-ancestor (get-buffer-create (format "%s,%s" file ancestor)))
(emerge-file-A (emerge-make-temp-file "A"))
(emerge-file-B (emerge-make-temp-file "B"))
(emerge-ancestor (emerge-make-temp-file "ancestor")))
;; Get the revisions into buffers
(with-current-buffer
buffer-A
(erase-buffer)
(shell-command
(format "%s -q -p%s %s" emerge-rcs-co-program
revision-A file)
t)
(write-region (point-min) (point-max) emerge-file-A nil 'no-message)
(set-buffer-modified-p nil))
(with-current-buffer
buffer-B
(erase-buffer)
(shell-command
(format "%s -q -p%s %s" emerge-rcs-co-program revision-B file)
t)
(write-region (point-min) (point-max) emerge-file-B nil 'no-message)
(set-buffer-modified-p nil))
(with-current-buffer
buffer-ancestor
(erase-buffer)
(shell-command
(format "%s -q -p%s %s" emerge-rcs-co-program ancestor file)
t)
(write-region (point-min) (point-max) emerge-ancestor nil 'no-message)
(set-buffer-modified-p nil))
;; Do the merge
(emerge-setup-with-ancestor
buffer-A emerge-file-A buffer-B emerge-file-B
buffer-ancestor emerge-ancestor
(cons (lambda ()
(delete-file emerge-file-A)
(delete-file emerge-file-B)
(delete-file emerge-ancestor))
startup-hooks)
(cons (lambda () (emerge-files-exit file))
quit-hooks)
output-file)))