我想通过svn命令行或使用Tortoise为一组修订创建补丁文件。如果重要的话,我在Win 7上。
我不需要做差异。我能做到。我有一些软件的两个不同版本。在版本A中修复了一个错误,其中涉及相当数量的文件。我想把它移植到版本B.除了逐个文件之外,我没有看到一个简单的方法来做到这一点。
我可以点击这些文件,并进行保存修订,但它并没有真正保留文件夹结构,就像修补文件一样。
谢谢, 埃里克
答案 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)
我有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 ...”将所有文件保存到同一文件夹中。