64

是否可以追溯创建补丁?我们使用的 Tortoise SVN 客户端为我们提供了创建补丁的选项,而不是(或期间)提交。

我想使用主干进行修复,将其签入并让构建服务器运行其所有测试和指标以确认修复是可以接受的。然后,我希望能够选择一些修订版(如果第一次尝试修复它只是让我们在那里的一部分)并从已更改的文件中创建一个补丁文件。

然后我可以获取补丁并将其应用到其他几个分支。这可能吗?

4

4 回答 4

111

Show Log,选择revisions,右键,“show Unified diff”。

于 2012-08-22T15:20:39.023 回答
2

如果路径有问题,可以分别在每个文件上显示差异

于 2013-07-26T13:33:42.810 回答
0

如果要比较来自不同分支的两个文件,还可以在 Windows 上使用 WinMerge:

  1. 检查每个分支
  2. 标记应该比较的两个文件
  3. 通过 WinMerge 进行比较
  4. 然后点击:工具->生成补丁

通过这种方式,您可以为来自不同分支的已提交文件创建补丁。

于 2014-08-05T07:20:26.947 回答
0

我倾向于使用svn diff命令行来创建补丁。因此,可以使用以下示例,但它们依赖于您知道修订号 - 这应该不难确定。

出于此答案的目的,我们假设以下内容:

  • 您提交的修订号是 1234。
  • 您的 SVN 存储库位于https://mySvnServer/myRepository/trunk.
  • 您将把补丁放在C:\Path\To\Patches\.

创建仅修订版 1234 的补丁。注意-c 1234

svn diff -c 1234 https://mySvnServer/myRepository/trunk > "C:\Path\To\Patches\1234.patch"

在您的提交和头部(最新提交)之间创建所有修订的补丁。注意-r 1234:HEAD

svn diff -r 1234:HEAD https://mySvnServer/myRepository/trunk > "C:\Path\To\Patches\1234_head.patch"

据我所知,没有一种单行方法可以从多个不连续的修订号创建补丁而不创建分支,单独合并所需的修订,然后执行 svn diff(类似于上面)来创建一个补丁。

于 2022-03-01T12:15:08.777 回答