【问题标题】:How to create a patch from the diff between two patches如何从两个补丁之间的差异创建补丁
【发布时间】:2019-09-17 16:11:57
【问题描述】:

我在本地 SVN 工作副本中进行了修改,创建了一个补丁,并将该补丁提交给存储库维护者。

存储库维护者合并了该补丁,但我对该服务器的访问又关闭了一周(我的 VPN 令牌已过期,获得新令牌需要一些时间)所以在它再次备份之前我无法更新我的工作复制。

与此同时,我对本地工作目录进行了进一步修改,并创建了第二个补丁。

如何将两个补丁之间的区别作为 .patch 文件发送给 repo 维护者以应用我的最新更改?

或者,有没有一种方法可以在离线状态下将 SVN 更新应用到我的本地存储库(例如通过电子邮件发送给我的文件)。

注意:我在 Windows 上,使用 TortoiseSVN,但会尝试任何可以让我到达我需要的地方的工具。

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    如果您可以访问 Linux(即使使用 WSL),您可以简单地创建另一个补丁,然后使用 interdiff 命令显示两个差异文件之间的差异。

    interdiff patch1 patch2
    

    在 Ubuntu 中,interdiff 可以使用以下方式安装:

    sudo apt install patchutils
    

    【讨论】:

      【解决方案2】:

      我很确定使用 TortoiseSVN 的 GUI 无法实现您的目标。我现在没有合适的环境,但这是我会尝试的:

      • 复制完整的工作副本,并将其命名为old
      • 还原 old 工作副本中的更改。
      • 将现有补丁应用到“旧”工作副本。
      • 从针对这两个工作副本的命令提示符运行svn diff 命令。
      • 如果需要,编辑生成的 .diff 文件,使其看起来代表同一工作副本的两个修订版本之间的差异,而不是两个不同的工作副本。

      新版本的 TortoiseSVN 在命令提示符中提供了svn 命令。我希望你也可以使用它。

      【讨论】:

      • 不幸的是,这不起作用。 SVN diff 命令看到两个文件夹具有相同的修订版,它只是将挂起的更改转储到 diff 文件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      相关资源
      最近更新 更多