如何确定哪个规则导致文件在Mercurial中被忽略?

Ben*_*rns 9 mercurial hgignore

Mercurial目前忽略了一个我认为不应该被忽视的文件.该.hgignore文件非常大,经过粗略的阅读后,不清楚哪个规则是罪魁祸首.

有没有办法让Mercurial告诉我.hgignore中的哪些规则(如果有的话)匹配文件?

rpe*_*kov 13

你无法开箱即用,但你可以为此编写Mercurial扩展.

我写了扩展名为hg-isignored,可以显示.hgignore中的哪些规则与指定的文件夹或文件匹配.

安装

克隆扩展源某处,即在~/.hgrc.d/hg-isignored文件夹中:

hg clone https://hg@bitbucket.org/rpeshkov/hg-isignored ~/.hgrc.d/hg-isignored
Run Code Online (Sandbox Code Playgroud)

.hgrc文件的扩展部分添加扩展程序:

[extensions]
isignored=~/.hgrc.d/hg-isignored/hg-isignored.py
Run Code Online (Sandbox Code Playgroud)

现在Mercurial将能够使用isignored通过扩展实现的命令.

用法

当你在Mercurial存储库中时,运行命令hg isignored PATH,而不是PATH插入要检查的文件夹或文件,即hg isignored readme.txt.扩展将告诉您是否忽略指定的PATH并将显示您使用的规则.

测试

在里面

[~/hgtest]% hg init
Run Code Online (Sandbox Code Playgroud)

没有.hgignore

[~/hgtest]% touch readme.txt
[~/hgtest]% hg st  
? readme.txt
[~/hgtest]% hg isignored readme.txt
abort: .hgignore file not found
Run Code Online (Sandbox Code Playgroud)

添加.hgignore

[~/hgtest]% echo "syntax: glob" > .hgignore
[~/hgtest]% echo "readme.txt" >> .hgignore
[~/hgtest]% hg st
? .hgignore
[~/hgtest]% hg isignored readme.txt
Path 'readme.txt' is ignored by:
relglob:readme.txt
Run Code Online (Sandbox Code Playgroud)

不要忽略文件

[~/hgtest]% touch readme2.txt
[~/hgtest]% hg isignored readme2.txt
Path 'readme2.txt' is not ignored
Run Code Online (Sandbox Code Playgroud)

忽略文件夹

[~/hgtest]% mkdir build
[~/hgtest]% touch build/keep.txt
[~/hgtest]% echo "build/" >> .hgignore
[~/hgtest]% hg st
? .hgignore
? readme2.txt
[~/hgtest]% hg isignored build
Path 'build' is ignored by:
relglob:build/
[~/hgtest]% hg isignored build/keep.txt
Path 'build/keep.txt' is ignored by:
relglob:build/
Run Code Online (Sandbox Code Playgroud)

忽略文件夹中的所有内容

[~/hgtest]% echo "syntax: glob" > .hgignore
[~/hgtest]% echo "build/*" >> .hgignore
[~/hgtest]% hg st
? .hgignore
? readme.txt
? readme2.txt
[~/hgtest]% hg isignored build
Path 'build' is not ignored
[~/hgtest]% hg isignored build/keep.txt
Path 'build/keep.txt' is ignored by:
relglob:build/*
Run Code Online (Sandbox Code Playgroud)

  • 您是否针对这个问题写了这个?根据您的提交历史记录,看起来就像您所做的那样。 (2认同)