Function: ediff-vc-merge-internal

ediff-vc-merge-internal is a byte-compiled function defined in ediff-vers.el.gz.

Signature

(ediff-vc-merge-internal REV1 REV2 ANCESTOR-REV &optional STARTUP-HOOKS MERGE-BUFFER-FILE)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/ediff-vers.el.gz
;;; Merge with Version Control

(defun ediff-vc-merge-internal (rev1 rev2 ancestor-rev
				     &optional startup-hooks merge-buffer-file)
;; If ANCESTOR-REV non-nil, merge with ancestor
  (let ((vc-find-revision-no-save t)
        buf1 buf2 ancestor-buf)
    (save-window-excursion
      (save-excursion
	(vc-revision-other-window rev1)
	(setq buf1 (current-buffer)))
      (save-excursion
	(or (string= rev2 "")
	    (vc-revision-other-window rev2))
	(setq buf2 (current-buffer)))
      (if ancestor-rev
	  (save-excursion
	    (if (string-empty-p ancestor-rev)
		(setq ancestor-rev
                      (vc-symbolic-working-revision buffer-file-name)))
	    (vc-revision-other-window ancestor-rev)
	    (setq ancestor-buf (current-buffer)))))
    (if ancestor-rev
	(ediff-merge-buffers-with-ancestor
	 buf1 buf2 ancestor-buf
	 startup-hooks 'ediff-merge-revisions-with-ancestor merge-buffer-file)
      (ediff-merge-buffers
       buf1 buf2 startup-hooks 'ediff-merge-revisions merge-buffer-file))
    ))