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

时间:2018-06-22 18:31:58

标签: python python-3.x svn tortoisesvn

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

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

svn diff -r <rev1>:<rev2>

但是问题在于,在更改的上下文中,这仅给出了很少的一行。例如,如果我有一个100行的文件,并且更改了第50行,这将向我显示第50行的更改,并说出它上方和下方的5-7行。

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

也尝试使用提到的here的建议,但是对于我手头的情况,这似乎不可行。

在此情况下提供的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

对于您提供链接的命令:

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

这里的--diff-cmd意味着您将使用第三方工具进行区别。而您将要使用的第三方工具是diff。 因此,首先您需要查看diff工具是否已安装在系统中以及是否在路径变量中。

您可以通过在命令promt或终端中键入以下命令来检查。 diff --help diff help in cmd

对于您的情况,因为您需要整个文件,则应尝试使用以下命令:

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

在这里,您要求svn进行差异修订34和35,但使用名为diff的外部差异工具。使用-x告诉您将标志-y传递到此外部工具,并将输出存储在文本文件中。

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

文本文件将如下所示。这将是一个非常长的文件,因为它具有所有已更改文件的全部。 Example Some Text File