Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Version control Mercurial防止文件更改_Version Control_Mercurial_Commit_Hgignore - Fatal编程技术网

Version control Mercurial防止文件更改

Version control Mercurial防止文件更改,version-control,mercurial,commit,hgignore,Version Control,Mercurial,Commit,Hgignore,可能重复: 我在一个使用Mercurial的团队中工作,我们有一个签入且稳定的配置文件 由于它是一个配置文件,一些团队成员需要对其进行更改,以使软件在他们的机器上工作,但我想防止这些更改在签入时进入存储库 我该怎么做? 我希望默认配置文件位于存储库中,并且在提交时忽略用户所做的更改。您不能这样做。您不应跟踪需要在本地副本中更改的文件,而应跟踪模板(或修改配置系统以允许本地配置文件覆盖默认配置文件)。您需要添加一个钩子来完成此操作: 钩子可以是服务器端(这不会阻止提交,但会阻止将更改推送到服务

可能重复:

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

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

我该怎么做?


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

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

您需要添加一个钩子来完成此操作:


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

您可能想看看类似的问题(回答git和svn的类似问题):以及

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

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

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

您可以使用MQ扩展,并为您的需求添加一个小插件-特定于用户的更改存储在MQ修补程序中,而不是永久性回购的更改集中。也就是说,用户可以更改基本配置,但他的任务是在MQ中更新修补程序,而不是commit更改为普通更改集。

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


另请参阅kostja发布的链接。

“Can't”是一个很强的词,在本例中不正确。Cat Plus-为什么在本例中我可以?我对Mercurial挂钩或Python语言一无所知。是否有一个我想在某个地方使用的示例?编写挂钩不需要了解Python(它们可以是任何可执行的任意命令,因此您可以制作一个与bash脚本一样简单的命令)