【问题标题】:Want to make an svn patch file between a set of revisions想要在一组修订之间制作一个 svn 补丁文件
【发布时间】:2014-09-18 16:15:42
【问题描述】:

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

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

我可以点击文件,然后保存修改,但它并没有真正保留文件夹结构,就像做一个补丁文件那样。

谢谢, 埃里克

【问题讨论】:

  • 一个补丁文件(至少是该术语的常规使用)差异的结果。执行差异,将该输出转储到文件中。那是你的补丁文件。然后使用patch 或其他机制将该补丁(差异)应用到另一组文件。
  • 你的问题和 Git 有关系吗?

标签: windows svn tortoisesvn patch


【解决方案1】:

我个人会选择命令行 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

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

这将为您提供一个可以创建补丁文件的差异工具。 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

【讨论】:

  • 我不明白为什么在这种情况下你需要 GnuWin。
  • +1 @bahrep。 TortoiseSVN 与本机 Win32 二进制文件捆绑在一起,没有理由通过引入 GnuWin32 来搅浑水。
【解决方案2】:

Erik 的建议可能会奏效。使用 Jubob 的建议,我能够完成所需的工作。

我有 13 个变更集,其中一些将以前的部分或全部变更集撤消到多个文件中,我想将这些文件从版本 A 移植到我的代码的版本 B。我通过在 Tortoise 的 Message 字段中搜索缺陷 ID 生成了一个修订列表。然后我去了 Tortoise 中的每个相关修订,右键单击它们并执行“将更改显示为统一差异”。这基本上创造了 Jubob 所说的差异。在每个差异上,我都进行了另存为并将每个修订保存为修订 1.patch、修订 2.patch 等。

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

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

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

-埃里克

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-02-14
      • 2012-08-02
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2012-05-07
      • 2011-03-22
      相关资源
      最近更新 更多