可能重复:
Mercurial:如何忽略对跟踪文件的更改
我在一个使用Mercurial的团队工作,我们有一个已签入且稳定的配置文件。
由于它是一个配置文件,一些团队成员需要对它进行更改,才能在他们的机器上运行软件,但我想防止这些更改在签入时进入存储库。
我该怎么做
我希望默认的配置文件在存储库中,并且在提交时忽略用户所做的更改
一般模式是从存储库中删除config
文件并将其添加到.hgignore
,而是提供一个config.example
文件,用户必须将其复制到config
并进行自定义。如果您想让项目设置尽可能简单,可以通过构建脚本进行复制。
另请参阅kostja发布的链接。
您可能想看看类似的问题(对git和svn提出类似的问题(:git-提交机器特定的配置文件和如何实用地版本控制配置文件?。
请注意,他们不会直接回答您的问题,但提供了一些规避问题的最佳实践。
在当前的一个项目中,我们决定支持将模板置于版本控制之下(如template.properties
(,并将其修改为本地使用,如(local.properties
(,而忽略修改后的文件。这是一种更稳健的方法。
在另一个项目中,我们采用了不同的方法,每个开发人员都有一个单独的文件({activeDirectoryLogin}.properties}
(。将根据当前用户自动选择相应的文件。这种方法有其缺点,幸运的是,我们可以忽略这些缺点,因为在项目期间,我们有一个由5名共同开发人员组成的相当小且稳定的团队。好处是,开发人员能够意识到其他人的偏好,并能够快速再现任何可能的问题。此外,可以在不同的系统上轻松评估设置。
你不能。您不应该跟踪需要在本地副本中更改的文件,而是跟踪模板(或者修改您的配置系统,允许本地配置文件覆盖默认配置文件(。
您需要添加一个钩子来完成此操作:
http://www.selenic.com/mercurial/hgrc.5.html#hooks
钩子可以是服务器端(这不会阻止提交,但会阻止将更改推送到服务器端存储库(,也可以是客户端(这可以阻止提交,但是钩子必须由每个开发人员在本地安装(。
您可以将MQ扩展与reqs的小插件一起使用——特定于用户的更改存储在MQ补丁中,而不是永久repo的更改集中。I.e用户可以更改基本配置,但的任务是更新MQ中的补丁,而不是将更改提交为普通变更集。