有没有办法忽略对mercurial提交中某些文件的更改?
我有一个特定情况,我们有一个默认的oracle tnsnames.ora文件,指向127.0.0.1,但有些开发人员会将其修改为指向其他系统,但我们不想更改默认文件
在subversion中,我简单地将此添加到ignore-on-commit更改列表中。有没有办法在mercurial中这样做?
答案 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/