【问题标题】:Is there an ignore-on-commit option in mercurial?mercurial 中是否有提交时忽略选项?
【发布时间】:2010-10-27 10:33:07
【问题描述】:

有没有办法在使用 mercurial 提交时忽略对某些文件的更改?

我有一个具体的情况,我们有一个默认的oracle tnsnames.ora 文件指向127.0.0.1,但是有些开发者会修改它指向其他系统,但是我们不想更改默认文件.

在 subversion 中,我简单地将其添加到了提交时忽略更改列表中。有没有办法在 mercurial 中做到这一点?

【问题讨论】:

    标签: mercurial hgignore


    【解决方案1】:

    如果你想从“hg commit”命令中省略的文件已经被“跟踪”了,你应该使用 -X 选项。传递给 -X 的模式非常灵活,例如可以运行:

    % hg stat
    A etc/foo.conf
    M src/bar.c
    M lib/libbar/loader.c
    % hg commit -X '**.conf'
    

    为了避免提交任何带有“.conf”扩展名的文件,不管它在源代码树中有多深。在上面显示的工作区中,这将提交“src/bar.c”和“lib/libbar/loader.c”,但不会提交“etc/foo.conf”。

    要排除多种文件名模式,请使用多个 -X 选项,即:

    % hg commit -X '**.conf' -X '**.sh'
    

    【讨论】:

    • 有关“**.conf”样式模式的信息,请参见“hg help patterns”。
    • 有什么办法可以永久保存吗?我不想在每次提交时都使用 -X。
    • @Kugel 看起来不像。对于包含 20 个配置文件的代码库,Mercurial 让我觉得这是一个糟糕的选择,这些配置文件都包含用户特定的内容。我不应该编写脚本来让版本控制为我工作而不是反对我。不,这 20 个配置文件也不是我的主意。我猜那家伙也选择了 Mercurial。
    • @Kugel:可以为具有相同名称的命令创建别名,如selenic.com/mercurial/hgrc.5.html#alias 中所述,从而覆盖它。尽管据说这几乎总是坏主意,但事实并非如此。
    • 你不能在 .hgignore 中尝试一下吗?
    【解决方案2】:

    传统上,解决这个问题的方法不是对文件本身进行版本控制,而是将其副本作为模板供其他人使用。

    所以你可以hg mv tnsnames.ora tnsnames.ora-template,然后提交,然后将 tnsnames.ora-template 的文件系统直接复制到 tnsnames.ora,并将 tnsnames.ora 添加到 .hgignore 文件中。

    对模板的后续更改仍会被推出,但它们实际上不会改变工作环境,除非有人将模板复制到实际文件中。

    【讨论】:

    • 因此,如果您有 app.config 并将其重命名为 app.config-template,则存储库中将不再有 app.config。这将导致自动构建出现问题。我认为构建过程需要被告知这个“模板”并将其重命名。这不是很好。
    • 不想重命名,想复制修改。您可以通过自动构建脚本执行此操作,也可以通过挂钩执行此操作,但无论哪种方式,如果您的文件因克隆而异,则必须在某处应用一些智能。
    【解决方案3】:

    您可以将 commit 别名为 'hg commit -X exclude_file.ext' 我从未使用过 mercurial,所以我只是通过这里的手册页。

    【讨论】:

      【解决方案4】:

      在 Mercurial 的文档中查找 .hgignore 文件。

      这是一个示例忽略文件。

             # use glob syntax.
             syntax: glob
      
             *.elc
             *.pyc
             *~
      
             # switch to regexp syntax.
             syntax: regexp
             ^\.pc/
      

      【讨论】:

      • tnsnames.ora 文件已签入。我想忽略我的本地更改,因为它们仅适用于我的机器。这就是 .hgignore 不起作用的原因
      猜你喜欢
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      相关资源
      最近更新 更多