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 (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= ancestor-rev "")
		(setq ancestor-rev (vc-working-revision
                                    buffer-file-name)))
	    (vc-revision-other-window ancestor-rev)
	    (setq ancestor-buf (current-buffer))))
      (push (let ((f1 (buffer-file-name buf1))
                  (f2 (unless (string= rev2 "") (buffer-file-name buf2)))
                  (fa (unless (or (string= ancestor-rev "")
                                  (not ancestor-rev))
                        (buffer-file-name ancestor-buf))))
              (lambda ()
                (ediff-delete-version-file f1)
                (if f2 (ediff-delete-version-file f2))
                (if fa (ediff-delete-version-file fa))))
	    startup-hooks))
    (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))
    ))