在mercurial(hg)中添加更新时的挂钩

时间:2011-05-24 19:00:38

标签: mercurial hook updates

我目前正在开发一个mercurial控制下的项目,我希望在更新时获取一个钩子来编辑.htaccess fille,以避免更改APPLICATION_ENV以适应“模式”应用程序应运行/加载配置/连接到数据库。

我的存储库结构如下:

Main dev repo (ENV : development)
    +-- Stable repo (Production version) (ENV : production)
    +-- Local dev repo (working version) (ENV : development)
        +-- Prototype repo (prototyping repo) (ENV : prototype)

我想要编辑的.htaccess部分如下(文件的第一行):

# Application var
SetEnv APPLICATION_ENV development

我不介意运行python脚本(或任何其他语言)我正在寻找正确的挂钩以放入.hg\hgrc文件

1 个答案:

答案 0 :(得分:1)

这不是正确的事情,因为这会改变实际的文件。您创建的下一个提交实际上会将更改提交到您的存储库。

相反,推荐的方法是执行以下操作:

  1. 制作模板文件,并将其提交到您的存储库,即。 .htaccess.template
  2. 将实际文件.htaccess添加到.hgignore文件以使Mercurial避免使用
  3. 在本地,从模板文件复制到实际文件,然后编辑
  4. 这确保了对实际文件的更改(无论它们是什么)都不会提交到您的存储库。

    某些配置系统还支持条件包含,因此您可以使用if extra config file X exists, load X as well之类的内容,然后您可以执行以下操作:

    1. 将实际文件提交到存储库,但将其设置为包含默认值
    2. 的简单文件
    3. 使用这样的include-statement
    4. 结束文件
    5. 将您所包含的文件的名称添加到.hgignore文件中,以便您不会将此类文件提交到存储库
    6. 这将确保任何人都可以添加或覆盖默认配置,方法是添加将包含的文件的自己版本。