在我们公司,我们刚刚开始使用Mercurial,我们面临以下问题:
我们在远程存储库中有一些文件被每个开发人员更改为添加一些本地配置,但这些文件绝不能在远程存储库中更改。
有没有办法告诉Mercurial在本地停止跟踪这些文件而不对远程存储库上的文件进行任何更改?
我们尝试使用hg forget <file>
,但据我了解,这将从远程存储库中删除该文件。
我们还尝试将这些文件添加到.hgignore
文件中,但不知何故文件实际上没有被忽略,我猜Mercurial这样做是因为文件已被跟踪。
到目前为止,我们只是在执行提交时忽略文件,并且在更新后使用shelve
来维护和恢复我们的本地更改,但它开始是一项非常繁琐的任务。
提前感谢您的帮助。
编辑:虽然它没有完全解决我们想要的问题,但接受的答案是最好的方法。我们的问题可能是设计不良造成的。
答案 0 :(得分:3)
如果您想要更改的文件是config.cfg
,请检入config_template.cfg
,忘记config.cfg
是否已跟踪,并将config.cfg
添加到config.cfg
忽略列表。然后,构建规则可以从模板创建{{1}}(如果它尚不存在)。
然后,用户将拥有一个可以自定义的启动config.cfg,而无需将其签入。
答案 1 :(得分:1)
您可以使用配置[defaults]
部分向常规命令添加一些“--exclude
”选项(请参阅我对Mercurial hg ignore does not work properly的回答)以获取更多详细信息。
但是......要小心,默默地忽略对文件的修改是危险的,并且此[defaults]
部分已被标记为已弃用(它仍然存在于2.9.2中)。
答案 2 :(得分:1)
恕我直言,在存储库中存放一个文件的错误方法,无论如何都需要改变每个人 - 这表明你根本不想跟踪它。
将文件更改为config.sample,并让程序在首次启动时创建默认配置(因此当没有现有配置文件时)并让每个开发人员按照他/她的需要使用配置文件。 / p>
我现在才看到Mark Tolnen的回答:)