3

可能重复:
如何使用 tortoise hg “作为存储库的一部分”忽略 kiln/mercurial 中的文件

我有一个我不想签入的配置文件,但是我确实希望在有人签入更改时获得更新。

在大多数系统中,我只需要在签入时取消选中配置文件旁边的勾号,但是 HG 似乎让生活变得更加艰难!

Parforce 这更容易,我可以在不同的更改列表中检查配置文件,我如何在 TortoiseHg 中做同样的事情?

4

2 回答 2

4

一般来说,你不会。处理这个问题的常用方法不是将配置文件放在源代码管理中,而是将其模板放在源代码管理中。类似的东西config.sample。您甚至可以调整运行/构建脚本以复制config.sampleconfig if configdoesn't already exists

有很多其他方法可以尝试使用 mq 或类似的别名来解决此问题mycommit = commit -X config,但其核心是一个文件要么被跟踪,要么不被跟踪,而且每个人都必须更改自己的文件不应该被跟踪。

于 2012-04-13T16:10:06.200 回答
2

如果您在提交之前从文件列表中取消选中该文件,它将不会进入更改集。这意味着它不会在推送中出现(因为这些是每个更改集)。

这是 Tortoise 的一项功能,使其在命令行中非常有用。

如果您使用已编辑的文件进行拉动,您将创建多个头。如果您希望文件具有更改功能,您可以合并这些,但这可能是一个手动步骤。

或者,在配置文件的情况下,使用 Mercurial 的 Patch Queue 功能很有用。因此,从命令行这是可能的(假设它在您的工作目录中更改):

hg qnew "localConfig"
hg qrefresh

这将创建一个名为“localConfigs”的新补丁队列项目,并将编辑后的文件(您的配置文件)放入该项目。然后您可以:

hg qpop

将其从补丁队列中删除(从您的更改集路径中)。或者:

hg qpush

把它放在你的变更集路径中。这是一种更简单的管理文件更改的方法,您可以在与中央存储库保持同步的基础上定期进行:您将队列项目弹出、拉取和更新,然后将队列项目推回(处理任何合并冲突,尽管这些是如果您的物品很小,则很少见)。这样你就可以避免多个头。

https://www.mercurial-scm.org/wiki/MqExtension

我们倾向于在办公室使用这种机制。

注意,推入和弹出就像一个堆栈集合;如果“localConfigs”位于“moreLocalChanges”之上,如果您希望推送“localConfigs”,则两者都需要。我的示例假设“localConfigs”补丁是队列中唯一的补丁。在 Mercurial 配置中默认情况下它也被禁用,但与它捆绑在一起,因此您可以简单地启用它:

[extensions]
mq =
于 2012-04-13T12:37:22.867 回答