【问题标题】:Why is preoutgoing hook executed on Strip in Mercurial?为什么在 Mercurial 的 Strip 上执行预输出挂钩?
【发布时间】:2020-03-12 07:45:17
【问题描述】:

有人可以解释为什么我的preoutgoing 钩子在执行hg strip (Mercurial Strip) 时会被执行吗?是否有机会禁用该行为?

我希望钩子在执行hg push 时会运行。

【问题讨论】:

  • 只是一个猜测,但我认为 hg 在运行 strip 时会在内部执行类似 push 的操作,因为它首先进行备份。这就像推送到一个文件而不是另一个 repo,然后是我们认为的真正的剥离操作,其中更改集被删除。据我所知,这与 hg bundle 的工作方式非常相似。
  • 非常感谢!您是否有机会解决这种行为?是否可以确定初始命令(hg push vs. hg strip)?

标签: mercurial


【解决方案1】:

为了避免执行我的钩子代码,我在钩子的最开始添加了以下代码行:

if "%HG_SOURCE%" == "strip" (
    exit /b 0
)

outgoingpreoutgoing 都将提供一个指示源操作的参数。在Python中,这个参数被称为source,否则可以访问环境变量HG_SOURCE

  • hg pushHG_SOURCEpush
  • hg stripHG_SOURCEstrip

基于该观察,您可以简单地评估初始命令。

来源:

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2012-01-25
    • 2020-02-15
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多