【问题标题】:What does it mean that hg applies a patch to a working directory?hg 将补丁应用于工作目录是什么意思?
【发布时间】:2019-04-12 16:10:07
【问题描述】:

我有生以来第一次尝试使用补丁(恢复损坏的存储库)。所以我对这个概念不是很熟悉,虽然我读过一点。我正在使用 TortoiseHg。我创建了一个补丁(作为文件),切换到另一个存储库,并正在尝试导入它。我已经要求 THg 将其导入到存储库(其他选项是货架和工作目录)。当我单击 Import 时,THg 说补丁已导入到工作目录,并且控制台显示:

% hg import --verbose --"PATH\1059.patch"
应用 PATH\1059.patch
应用于工作目录
[命令成功完成 DATE]

并且我在历史记录窗口中看不到任何更改(没有修订版 1059)。我不知道我现在应该做什么或我做错了什么。

我使用的是 Windows 10,TortoiseHg 4.9 和 Mercurial 4.9。

【问题讨论】:

  • 您说您使用的是 THG...但示例是命令行。
  • 有时还有其他处理回购损坏的方法。可能补丁不是你唯一的选择(也许)。
  • @DaveInCaz,这是 THg Workbench 控制台中的打印输出(你称之为登录你的答案)。

标签: mercurial tortoisehg


【解决方案1】:

当以任何方式在工作目录中修改某些内容时,它不会自动影响存储库中的任何内容。您必须手动提交此类更改。

对于命令行hg patch,我认为默认是自动提交。可能是 THG 正在使用 --no-commit 选项。您可以在 THG 输出/日志窗口中进行检查。

对于命令行,帮助import中也有这个注释...

首先将更改应用到工作目录(除非 --bypass 是 指定),如果有未完成的更改,导入将中止。

THG 导入窗口如下所示:

根据the docs

您可以选择直接导入到存储库中, 工作文件夹、架子文件或补丁队列。

我认为如果您检查“补丁将被导入”下拉菜单,它可能被设置为“工作目录”或类似的。如果您将其更改为“存储库”,我认为它会为您提交。

【讨论】:

  • 如问题中所述,我已经看到了 3 个选项并选择了存储库。此外,在“应用”补丁后,似乎没有任何变化根本,目录处于干净状态,没有任何更改要提交。
【解决方案2】:

除非提供更好的答案,否则我必须假设此行为是由于存储库损坏:在对未损坏的存储库执行完全相同的操作时不会观察到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 2013-04-05
    • 2021-01-01
    • 1970-01-01
    • 2013-04-10
    • 2016-12-28
    • 2015-06-05
    • 1970-01-01
    相关资源
    最近更新 更多