在Mercurial存储库中创建.hgignore可用于所有子服务器吗?

gla*_*gel 5 mercurial hgignore hgrc subrepos

我有一个Mercurial存储库,其中有几个子库.是否有可能只在主存储库中定义一般的.hgignore-File(例如忽略对象文件),并且可选地在子存储库中定义一个专用的?

手册中没有足够的信息.使用指定.hgignore文件

[ui]
ignore = .hgignore
Run Code Online (Sandbox Code Playgroud)

到我的主目录中的.hgrc也不起作用.

有任何想法吗?

Joe*_*ant 3

每个子存储库中的一个.hgignore文件将作为该子存储库的专用文件。.hgignore然后,您可以通过将其包含在每个子存储库的文件中来使用主存储库作为主要存储库hgrc

[ui]
ignore.main = \absolute\path\to\mainrepo\.hgignore
Run Code Online (Sandbox Code Playgroud)

ignore = .hgignore这样做在全局中不起作用.hgrc(并且在 repo 中不起作用)的原因hgrc是,拥有只是.hgignore一个相对文件路径,其对绝对路径的解析取决于调用时使用的当前工作目录hg。例子:

  • 如果您进入\repos\main\并调用hg st,它会查找\repos\main\.hgignore. 如果您调用hg st -R nested,也会发生同样的情况,因为当前工作目录仍然相同。
  • 但如果您进入\repos\main\nested\并调用hg st,配置现在将查看\repos\main\nested\.hgignore

如果要指定.hgignore主目录中的全局路径,则需要使用非相对路径(或至少相对较少的路径)指定它:

[ui]
ignore = ~\.hgignore
Run Code Online (Sandbox Code Playgroud)