我在一个使用Mercurial的团队工作,我们有一个已签入并且稳定的配置文件。
由于这是一个配置文件,一些团队成员需要对其进行更改才能让软件在他们的计算机上运行,但我希望防止这些更改在签入时进入存储库。
我该怎么做?
我希望默认配置文件位于存储库中,用户提交的更改将在提交时被忽略。
答案 0 :(得分:3)
一般模式是从存储库中删除config
文件并将其添加到.hgignore
,而是提供用户必须复制到config.example
的{{1}}文件并自定义。如果要保持项目设置尽可能简单,可以通过构建脚本完成此复制。
另见kostja发布的链接。
答案 1 :(得分:2)
您可能需要查看类似的问题(为git和svn提供类似的问题):Git - Committing Machine Specific Configuration Files和How to version control config files pragmatically?。
请注意,他们没有直接回答您的问题,但提供了一些绕过问题的最佳做法。
在当前项目中,我们决定支持在版本控制下使用模板(如template.properties
)并将其修改为本地使用,如(local.properties
)并忽略修改后的文件。这是更强大的方法。
在另一个项目中,我们采用了不同的方法,每个开发人员都有一个单独的文件(
{activeDirectoryLogin}.properties}
)。根据当前用户自动选择适当的文件。这种方法有其缺点,我们可以忽略,因为我们在项目期间有一个由5个共同开发的开发人员组成的相当小而稳定的团队。好处是,开发人员了解其他人的偏好,可以快速重现任何可能的问题。此外,可以在不同系统上轻松评估设置。
答案 2 :(得分:0)
你做不到。您不应该跟踪需要在本地副本中更改的文件,而是跟踪模板(或修改您的配置系统以允许本地配置文件覆盖默认模板)。
答案 3 :(得分:0)
您需要添加一个钩子来执行此操作:
http://www.selenic.com/mercurial/hgrc.5.html#hooks
钩子可以是服务器端(这不会阻止提交,但会阻止将更改推送到服务器端存储库)或客户端(这可能会阻止提交,但钩子必须由每个开发人员在本地安装。)
答案 4 :(得分:0)
您可以将MQ扩展与您的reqs的小附加组件一起使用 - 特定于用户的更改存储在mq-patches中,而不是存储在permanent-repo的变更集中。即用户可以更改基本配置,但是他的任务是在MQ中更新补丁,而不是将更改作为普通变更集提交。