Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确定在Mercurial中导致文件被忽略的规则?_Mercurial_Hgignore - Fatal编程技术网

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

如何确定在Mercurial中导致文件被忽略的规则?,mercurial,hgignore,Mercurial,Hgignore,Mercurial目前正在忽略一个我认为不应该忽略的文件。.hgignore文件非常大,粗略阅读后,不清楚哪些规则是罪魁祸首 有没有办法让Mercurial告诉我.hgignore(如果有的话)中的哪些规则与文件匹配?您不能开箱即用,但可以为此编写Mercurial扩展名 我已经编写了扩展名,可以显示.hgignore中的哪些规则与指定的文件夹或文件匹配 安装 在某处克隆扩展源,即~/.hgrc.d/hg isignored文件夹中: hg clone https://hg@bitbucket.

Mercurial目前正在忽略一个我认为不应该忽略的文件。
.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版。