如果我有文件和差异,而不是同一个文件的两个版本,我可以使用ediff吗?

时间:2009-08-03 21:56:23

标签: emacs tfs

使用tf.exe diff,我可以获得差异。

我可以将它与ediff一起使用来显示emacs中的差异吗?

我的印象是ediff通常需要2或3个文件。我只有一个文件和差异。

2 个答案:

答案 0 :(得分:3)

您可能会选择使用

M-x ediff-patch-buffer

它将提示您输入补丁文件(如果已经打开缓冲区,则提示缓冲区),以及要修补的缓冲区。然后它会让你了解差异。

因为diff显示存储库版本更改为当前版本,所以补丁方向错误。我会编写一个生成正确差异的命令并使用它 - 如果你真的想使用差异。

就个人而言,我可能会尝试插入一些代码来获取'ediff-revision(我已经绑定C-x v -)以使其工作。

或者只是写一些跟随这个伪代码的lisp(因为我没有tf来做实际的测试):

(defun ediff-tf-file-with-previous-version (file &optional version)
   "DTRT and call ediff with the previous version of this file"
   (interactive)
   (ediff-files (progn
                  (unless version
                     (setq version (<parse-to-get-version> (shell-command (concat  "tf.exe properties " file)))))
                  (shell-command (concat "tf.exe view " file (<munge-itemspec-version> version) " > " file ".older")))
                 file))

感谢R Berg的修复

看起来有人编写了一个基本的Team Foundation模式,您可以从wiki page here获取该模式。看起来它似乎没有将任何内容插入ediff

答案 1 :(得分:0)

这是我编写的一个脚本(我想!):

#!/bin/bash

# quit on error
set -e

# create a temporary file for the patched output
# note that the mkfifo command is optional - it will save disc space
patched_file=/tmp/diff_$RANDOM
mkfifo $patched_file

patch -o $patched_file "$1" "$2" &

vimdiff "$1" $patched_file

rm $patched_file