1

在我们公司,我们刚开始使用 Mercurial,我们面临以下问题:

我们在远程存储库中有一些文件由每个开发人员更改以添加一些本地配置,但这些文件绝不能在远程存储库中更改。

有没有办法告诉 Mercurial 停止在本地跟踪这些文件而不对远程存储库上的文件进行任何更改?

我们尝试过,hg forget <file>但据我了解,这将从远程存储库中删除文件。

我们还尝试将这些文件添加到.hgignore文件中,但不知何故这些文件并没有真正被忽略,我猜 Mercurial 这样做是因为文件已经被跟踪。

到目前为止,我们只是在执行提交时忽略文件,shelve并在更新后用于维护和恢复本地更改,但这开始成为一项非常乏味的任务。

提前感谢您的帮助。

编辑:虽然它没有完全解决我们想要的问题,但接受的答案是最好的方法。我们的问题可能是由于设计不当造成的。

4

3 回答 3

3

例如,如果您要更改的文件是 ,则config.cfg签入config_template.cfg,忘记config.cfg它是否已被跟踪,然后添加config.cfg到忽略列表中。然后,如果模板不存在,则config.cfg可以从模板创建构建规则。

然后,用户将拥有一个起始 config.cfg,他们可以在不签入的情况下对其进行自定义。

于 2014-12-02T04:52:34.490 回答
1

您可以使用配置[defaults]部分向常用命令添加一些“ ”选项(请参阅我对Mercurial hg ignore does not work proper--exclude的回答)以获取更多详细信息。

但是..要小心,默默地忽略对文件的修改是危险的,而且这[defaults]部分已被标记为已弃用(它仍然存在于 2.9.2 中)。

于 2014-12-02T16:14:58.383 回答
1

恕我直言,在存储库中保存每个人都需要更改的文件是一种错误的方法-这表明您根本不想对其进行跟踪。

将文件更改为 config.sample,并让您的程序在第一次启动时创建一个默认配置(因此在没有现有配置文件的情况下)并让每个开发人员根据需要使用配置文件。

我现在才看到 Mark Tolnen 的回答 :)

于 2014-12-03T15:19:07.617 回答