想要在一组修订版本之间创建一个svn补丁文件

时间:2014-09-18 16:15:43

标签: windows svn tortoisesvn patch

我想通过svn命令行或使用Tortoise为一组修订创建补丁文件。如果重要的话,我在Win 7上。

我不需要做差异。我能做到。我有一些软件的两个不同版本。在版本A中修复了一个错误,其中涉及相当数量的文件。我想把它移植到版本B.除了逐个文件之外,我没有看到一个简单的方法来做到这一点。

我可以点击这些文件,并进行保存修订,但它并没有真正保留文件夹结构,就像修补文件一样。

谢谢, 埃里克

3 个答案:

答案 0 :(得分:0)

我个人会去命令行svn diff。如果您还没有,请点击下载链接:http://subversion.apache.org/packages.html#windows

以下是svn diff:http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.diff.html的文档。

鉴于上面的描述,它可能很简单:

svn diff --new="url of A" --old="url of B" > mypatch.patch

您可以尝试使用乌龟,但首先需要来自GnuWin的unix工具集的Windows端口。 http://sourceforge.net/projects/gnuwin32/

这将为您提供可以创建补丁文件的diff util。 TortoiseSVN允许你设置一个外部差异程序,但我不知道这有多好,因为我只使用乌龟作为方便(任何繁重的工作,我回到CLI)。关于此的文档:http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-diff.html。你也可以使用带有svn的外部差异。关于此处的文档:http://svnbook.red-bean.com/en/1.7/svn.advanced.externaldifftools.html

答案 1 :(得分:0)

埃里克的建议可能会奏效。我能够使用Jubob的建议得到我需要的东西。

我有13个更改集,其中一些更改了部分或全部以前的更改集到多个文件,我想从我的代码的版本A移植到版本B.我通过在Tortoise的Message字段中搜索缺陷id来生成修订列表。然后我去了Tortoise的每个相关版本,右键点击它们并做了一个" Show Changes as Unified Diff"。这基本上创造了Jubob所说的差异。在每个差异上,我执行了另存为并将每个修订保存为revision1.patch,revision2.patch等。

我开始使用Tortoise一次应用一个补丁文件,但这很乏味。所以我写了一个批处理文件,连续运行每个文件。批处理文件中的命令如下所示:

patch -p0 -i  "C:\mypatchfilelocation\revision1.patch"

哦还有一件事。在每个补丁文件中,我必须更改路径以匹配版本B的路径。所以我不得不从c:/ versionA /更改为c:/ versionB /

-Eric

答案 2 :(得分:0)

打开存储库浏览器。浏览到旧版本。右键单击该标记/分支文件夹,选择“标记为比较”。您将看到repo浏览器现在以粗体显示该目录。

然后浏览到新版本,右键单击该标签/分支文件夹,选择“将差异显示为统一差异”,您将获得一个补丁文件。

或者您可以右键单击并选择“比较网址”,然后在以下对话框中选择所有已更改的文件,右键单击并选择“将选择导出到...”或“将所选文件的列表保存到.. “。 “export”保留文件夹结构,“Save ...”将所有文件保存到同一文件夹中。