Mercurial目前忽略了一个我认为不应该被忽视的文件。 .hgignore
文件非常大,经过粗略的阅读后,哪个规则是罪魁祸首并不明显。
有没有办法让Mercurial告诉我.hgignore中的哪些规则(如果有的话)匹配文件?
答案 0 :(得分:12)
您无法开箱即用,但您可以为此编写Mercurial扩展程序。
我已经写了扩展名hg-isignored,可以显示.hgignore中哪些规则与指定的文件夹或文件匹配。
<强>安装强>
在某处克隆扩展源,即在~/.hgrc.d/hg-isignored
文件夹中:
hg clone https://hg@bitbucket.org/rpeshkov/hg-isignored ~/.hgrc.d/hg-isignored
在.hgrc
文件的扩展程序部分添加扩展程序:
isignored=~/.hgrc.d/hg-isignored/hg-isignored.py
现在,Mercurial将能够使用通过扩展程序实现的isignored
命令。
<强>用法强>
当您在Mercurial存储库中时,运行命令hg isignored PATH
,而不是PATH插入要检查的文件夹或文件,即hg isignored readme.txt
。扩展将告诉您是否忽略指定的PATH并显示已使用的规则。
<强>测试强>
初始化
[~/hgtest]% hg init
没有.hgignore
[~/hgtest]% touch readme.txt
[~/hgtest]% hg st
? readme.txt
[~/hgtest]% hg isignored readme.txt
abort: .hgignore file not found
添加.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
不会忽略文件
[~/hgtest]% touch readme2.txt
[~/hgtest]% hg isignored readme2.txt
Path 'readme2.txt' is not ignored
忽略文件夹
[~/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/
忽略文件夹中的所有内容
[~/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/*