如何在 python 脚本中获取 svn 的两个修订版的完整上下文差异?

How to get the full context diff of two revisions of svn in a python script?

我正在编写一个 python 脚本,使用 svn 命令打印文件上 2 个 svn 修订版的完整上下文更改日志(具有指示更改的完整文件)。

我在 svn 存储库上有两个提交,我需要这两个修订的差异。 为此,我可以使用

获取它
svn diff -r <rev1>:<rev2>

但问题是,这只给出了更改上下文中的几行。例如,如果我有一个 100 行的文件,我在第 50 行进行了更改,这将显示第 50 行的更改,并在其上方和下方显示 5-7 行。

我需要的是一个命令(或其他方式)向我显示完整文件,其中仅在第 50 行显示了更改。

也尝试使用提到的建议 here,但是对于我手头的场景来说它似乎没有用。

在此背景下的任何帮助表示赞赏。

对于您为 link 提供的命令:

svn diff --diff-cmd=diff -x -U10

这里的 --diff-cmd 表示您将使用第三方工具进行差异化处理。您要使用的第三方工具是diff。 所以首先你需要看看你的系统中是否安装了diff工具,并且在你的路径变量上。

您可以通过在命令提示符或终端中键入以下内容来检查。 diff --help

对于您的情况,因为您需要整个文件,您应该尝试类似以下命令的操作:

svn diff -r 34:35 --diff-cmd=diff -x -y > somefile.txt

在这里您要求 svn 比较修订版 34 和 35,但使用名为 diff 的外部比较工具。使用 -x 表示您将标志 -y 传递给此外部工具并将输出存储在文本文件中。

-y 标志告诉外部差异工具进行并排比较并在两列中输出数据。

文本文件看起来像这样。这将是一个非常长的文件,因为它包含所有已更改文件的全部内容。