mercurial中是否存在ignore-on-commit选项?

时间:2009-05-19 19:18:27

标签: mercurial hgignore

有没有办法忽略对mercurial提交中某些文件的更改?

我有一个特定情况,我们有一个默认的oracle tnsnames.ora文件,指向127.0.0.1,但有些开发人员会将其修改为指向其他系统,但我们不想更改默认文件

在subversion中,我简单地将此添加到ignore-on-commit更改列表中。有没有办法在mercurial中这样做?

4 个答案:

答案 0 :(得分:49)

如果要从“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'

答案 1 :(得分:22)

传统上,这可以通过不对文件本身进行版本控制来解决,而是通过将其副本版本化为其他人使用的模板来解决。

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

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

答案 2 :(得分:1)

你可以将别名提交为'hg commit -X excluded_file.ext'之类的东西我从来没有使用过mercurial,所以我只是去这里的手册页。

答案 3 :(得分:-2)

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

这是一个示例忽略文件。

       # use glob syntax.
       syntax: glob

       *.elc
       *.pyc
       *~

       # switch to regexp syntax.
       syntax: regexp
       ^\.pc/