如何确定在Mercurial中导致文件被忽略的规则?
Mercurial目前正在忽略一个我认为不应该忽略的文件。如何确定在Mercurial中导致文件被忽略的规则?,mercurial,hgignore,Mercurial,Hgignore,Mercurial目前正在忽略一个我认为不应该忽略的文件。.hgignore文件非常大,粗略阅读后,不清楚哪些规则是罪魁祸首 有没有办法让Mercurial告诉我.hgignore(如果有的话)中的哪些规则与文件匹配?您不能开箱即用,但可以为此编写Mercurial扩展名 我已经编写了扩展名,可以显示.hgignore中的哪些规则与指定的文件夹或文件匹配 安装 在某处克隆扩展源,即~/.hgrc.d/hg isignored文件夹中: hg clone https://hg@bitbucket.
.hgignore
文件非常大,粗略阅读后,不清楚哪些规则是罪魁祸首
有没有办法让Mercurial告诉我.hgignore(如果有的话)中的哪些规则与文件匹配?您不能开箱即用,但可以为此编写Mercurial扩展名 我已经编写了扩展名,可以显示.hgignore中的哪些规则与指定的文件夹或文件匹配 安装 在某处克隆扩展源,即
~/.hgrc.d/hg isignored
文件夹中:
hg clone https://hg@bitbucket.org/rpeshkov/hg-isignored ~/.hgrc.d/hg-isignored
在.hgrc
文件的“扩展名”部分添加扩展名:
[extensions]
isignored=~/.hgrc.d/hg-isignored/hg-isignored.py
现在Mercurial将能够使用扩展实现的isignored
命令
用法
当您在Mercurial存储库中时,运行命令hg-isignored-PATH
,在其中插入要检查的文件夹或文件,而不是路径,即hg-isignored-readme.txt
。扩展将告诉您指定的路径是否被忽略,并显示您使用的规则
测试
初始化
不,我不介意
[~/hgtest]% touch readme.txt
[~/hgtest]% hg st
? readme.txt
[~/hgtest]% hg isignored readme.txt
abort: .hgignore file not found
[~/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
添加.hgignore
[~/hgtest]% touch readme.txt
[~/hgtest]% hg st
? readme.txt
[~/hgtest]% hg isignored readme.txt
abort: .hgignore file not found
[~/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/*
你写这篇文章是为了回答这个问题吗?根据您的提交历史记录,看起来是这样的。。你应该得到所有的选票,先生,是的。我发现您的问题很有趣,并开始挖掘Mercurial源代码,以了解它如何处理被忽略的文件。当我运行“hg isgnored”命令时,我遇到一个错误:“abort:没有名为ignore的模块!”。这可能是一个简单的修复,但我不确定这是什么。该扩展似乎已安装,因为我可以运行“hg help isignored”。你能帮忙吗?@Faredoon你用的是哪个版本的Mercurial?@black_wizard,我用的是3.7.3版。