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

标签 python python-3.x svn tortoisesvn

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

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

svn diff -r <rev1>:<rev2>

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

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

还尝试使用提到的建议 here ,但是对于我手头的场景来说,这似乎并不奏效。

对此上下文的任何帮助表示赞赏。

最佳答案

对于您提供链接的命令:

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

这里的--diff-cmd表示您将使用第三方工具来进行差异处理。您将要使用的第三方工具是diff。 因此,首先您需要查看您的系统中是否安装了 diff 工具并且位于您的路径变量中。

您可以通过在命令提示符或终端中键入以下内容来检查这一点。 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 标志告诉外部 diff 工具进行并排比较并以两列输出数据。

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

关于python - 如何在 python 脚本中获取 svn 两个修订版的完整上下文差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993808/

相关文章:

svn - 在 SVN 中向上移动目录的白痴指南

python - 为类(class)成员设置值时如何防止错别字?

python - 如何在python中获取dict的深度项并丢弃其余的

python - 项目分配给字节对象?

java - 用于复制已提交类名称的 Eclipse 插件

svnadmin: Svndiff 包含一个太大的窗口

python - 我需要取消嵌套 JSON 数组元素并确保与 'ID' 列的正确映射

python - 根据csv文件更改字符串

python - 具有多索引的 Groupby

python - 如何在 Python 中绘制置信区间?