【问题标题】:Automatic shelve before pulling in Mercurial (with TortoiseHG)?在拉入 Mercurial 之前自动搁置(使用 TortoiseHG)?
【发布时间】:2012-03-01 17:46:34
【问题描述】:

我有一些不想提交的已更改文件(例如 web.config)。在我拉取并更新到新的变更集之前,我必须搁置它们。拉取更新后,我必须取消搁置它们。

我目前正在使用 TortoiseHG。有没有可以自动执行此操作的扩展程序?

【问题讨论】:

  • 这也是其他类型文件的常见场景; VB6 项目文件 (VBP) 因被 IDE 自动修改而臭名昭著,因此它们变得特别适合开发人员的 PC;但您通常不想提交这些更改。
  • @DaveInCaz 那么.hgignore 处理这些不是更好吗?
  • @DanielH 不,因为它们是项目的一部分,必须受源代码控制。有时,您确实需要根据具体情况对它们进行更改。,

标签: mercurial tortoisehg pull shelve


【解决方案1】:

我建议其他的:您可以使用两个不同的配置文件,而不是总是搁置和取消搁置:一个是存储库的一部分并包含虚拟/示例数据,另一个是每个用户在本地实际使用的,它被 Mercurial 忽略。

查看this answer 以获得更详细的解释我的意思。
我给出的示例是针对 Visual Studio 的,我从您的其他问题和答案中看到您显然在使用 .net 和 Visual Studio,因此您可以完全按照所写的方式使用我的示例。

【讨论】:

  • 这是一个很好的解决方案。我们将 web.config.default 保存在存储库中,并在本地创建一个副本并将其命名为 web.config 并进行任何我们需要的更改。
  • 这对于配置文件场景来说是一个很好的解决方案,但它可能不是处理不应提交的本地修改跟踪文件的最佳通用解决方案。
【解决方案2】:

在 Mercurial 中,只需 hg pull -u。未提交的更改与提示合并。与搁置、拉取/更新、取消搁置的结果相同。使用 TortoiseHg 会弹出一个对话框,提示丢弃/搁置/合并。

您可能会通过这种方式获得一个合并对话框,但对于搁置方法来说确实如此,因为 unshelve 可能也必须进行合并。如果没有冲突,您将不会从命令行获得提示。如果没有冲突,TortoiseHg 可能有一个选项来抑制对话框,但我没有检查。

【讨论】:

    【解决方案3】:

    我会尝试一些不同的东西。

    特别是关于 Web.config 文件,您可能希望考虑使用本地配置文件进行覆盖,而不是让本地更改未提交。 (例如,引用 .hgignore 中的单独文件)。我过去从事的项目这样做是为了将测试/产品配置与开发设置分开,反之亦然。

    我认为没有任何扩展可以为您执行此操作,但您最好编写一个快速批处理或 powershell 脚本来为您执行此工作流程。在以前的项目中,我有一个脚本可以执行类似的操作,因为它会执行 pull/update/rebase 以使我的更改保持在最前沿(我正在使用 hg 对抗 SVN 服务器,这很重要。)

    我知道我没有直接回答你的问题,但我希望这会有所帮助!

    【讨论】:

    【解决方案4】:

    直接回答:https://pypi.org/project/hg-autoshelve/

    但是正如建议的那样,配置文件的专用存储库似乎是一个更好的主意 Christian Specht there

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多