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

Nic*_*ell 38 mercurial hgignore

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

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

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

Gio*_*das 50

如果要从"hg commit"命令中省略的文件已被"跟踪",则应使用-X选项.传递给-X的模式非常灵活,可以运行例如:

% hg stat
A etc/foo.conf
M src/bar.c
M lib/libbar/loader.c
% hg commit -X '**.conf'
Run Code Online (Sandbox Code Playgroud)

避免提交任何带有".conf"扩展名的文件,无论它存在于源树的深度.在上面显示的工作区中,这将提交"src/bar.c"和"lib/libbar/loader.c",但不提交"etc/foo.conf".

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

% hg commit -X '**.conf' -X '**.sh'
Run Code Online (Sandbox Code Playgroud)

  • 有关"**.conf"样式模式的信息,请参阅"hg帮助模式". (8认同)

Zed*_*Zed 22

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

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

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

  • 您不想重命名,要复制和修改.您可以从autobuild脚本执行此操作,也可以从挂钩执行此操作,但无论哪种方式,如果您的文件与克隆不同,那么将需要在某处应用某些智能. (2认同)