3

可能重复:
Mercurial:如何忽略对跟踪文件的更改

我在一个使用 Mercurial 的团队工作,我们有一个已签入且稳定的配置文件。

由于它是一个配置文件,一些团队成员需要对其进行更改以使软件在他们的机器上运行,但我想防止这些更改在签入时将其放入存储库。

我怎样才能做到这一点?

我希望默认配置文件位于存储库中,并且用户所做的更改在提交时被忽略。

4

5 回答 5

3

一般模式是config从存储库中删除文件并将其添加到 中.hgignore,而不是提供config.example用户必须复制config和自定义的文件。如果您想让项目设置尽可能简单,则可以通过构建脚本完成此复制。

另请参阅 kostja 发布的链接。

于 2011-10-20T15:02:50.220 回答
2

您可能想看看类似的问题(对 git 和 svn 提出类似的问题):Git - Committing Machine Specific Configuration FilesHow to version control config files pragmatically? .

请注意,他们不会直接回答您的问题,但会提供一些规避问题的最佳实践。

在当前项目中,我们决定支持将模板置于版本控制之下(如template.properties)并修改它们以供本地使用(如local.properties)并忽略修改后的文件。这是更稳健的方法。

在另一个项目中,我们采用了不同的方法,每个开发人员都有一个单独的文件 ( {activeDirectoryLogin}.properties})。根据当前用户自动选择适当的文件。这种方法有其缺点,我们很幸运可以忽略,因为在项目期间,我们有一个由 5 名开发人员组成的相当小而稳定的团队。好处是,开发人员了解其他人的偏好,并且可以快速重现任何可能的问题。此外,可以在不同系统上轻松评估设置。

于 2011-10-20T14:21:42.083 回答
0

你不能。您不应该跟踪需要在本地副本中更改的文件,而是跟踪模板(或修改配置系统以允许本地配置文件覆盖默认配置文件)。

于 2011-10-20T14:12:41.783 回答
0

您需要添加一个钩子来执行此操作:

http://www.selenic.com/mercurial/hgrc.5.html#hooks

挂钩可以是服务器端(不会阻止提交,但会阻止将该更改推送到服务器端存储库)或客户端(可能会阻止提交,但挂钩必须在本地安装)由每个开发人员)。

于 2011-10-20T14:12:46.623 回答
0

您可以在您的请求中使用带有小型附加组件的 MQ 扩展 - 特定于用户的更改存储在 mq-patches 中,而不是存储在永久存储库的变更集中。即用户可以更改基本配置,但他的任务是更新MQ 中的补丁,而不是像普通变更集一样提交更改。

于 2011-10-20T14:30:03.957 回答