Mercurial:如何忽略对跟踪文件的更改

Svi*_*ish 51 version-control mercurial configuration-files hgignore

我的项目中有一个包含数据库设置的文件,我已将其设置为某些默认值.该文件由Mercurial跟踪并签入.由于此文件将使用不同的值编辑各种开发人员机器,有没有办法告诉Mercurial忽略对此文件的新更改?

我尝试将文件添加到.hgignore文件中,但由于文件被跟踪,因此不会被忽略.这在其他情况下还不错,但我想知道我能在这里做些什么吗?

sth*_*sth 27

如果您始终要忽略该文件,则可以将该-X选项作为默认值添加commit.hg/hgrc配置文件中:

[defaults]
commit = -X program.conf
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常好的主意,直到你尝试提交合并.提交合并时,不允许指定文件或模式.因此,在你的`.hgrc`中,如果没有首先编辑`.hgrc`,似乎根本不可能提交合并.有人有解决方案吗? (3认同)
  • 你在很久以前问过@Yitz,但是如果它有用,我使用的一个快速而又脏的修复就是有一个快速的批处理脚本,可以将repo hgrc移出去,进行提交并将其移回.如果您的hgrc中没有其他东西需要存在,那显然只会起作用. (2认同)

yan*_*ost 26

使用文件模板绝对是最好的解决方案.例如,如果您有一个database.ini文件,请提交一个database.ini.template文件并忽略database.ini.hgignore


Mar*_*ler 12

我们写了一个名为exclude的扩展名.它会自动-X在支持它们的命令上添加选项 - 因此hg status并且hg commit不会看到修改后的文件.它的工作原理是.hgexclude从存储库的根目录读取文件,就像.hgignore文件一样.您添加要在其中排除的文件:

syntax: glob
db.conf
Run Code Online (Sandbox Code Playgroud)

扩展程序运行良好,但有一个已知的情况,它失败:合并和合并后的提交(这在wiki上有记录).它需要进行改进,以便将修改保存到临时文件中,然后再恢复它们.如果您需要此功能,请与我们联系.


Von*_*onC 8

没有真正的自动化过程,但您可以尝试(如在此SO问题中)-X选项hg commit:

% hg stat
M myfile
% hg commit -X 'myfile'
Run Code Online (Sandbox Code Playgroud)

(其他解决方案可能涉及搁置或hq)

但是,这不是"正确"的解决方案.我宁愿推荐版本控制:

  • 文件模板
  • 一个能够生成最终文件的脚本(您修改但可以完全忽略)


CAD*_*oke 5

如果您使用的是 TortoiseHG,请打开存储库的设置,转到提交部分(左侧的第二个图标)并将文件名添加到右侧的自动排除列表中(从底部开始约第 3 个)列表)。

来自https://tortoisehg.readthedocs.io/en/latest/settings.html#commit