#11095·dvc

复验身份:当祖先符合“ dir/ qq ” 模式时, 否定语会被删除

作者: KaizenShogun创建于 2026年9月6日更新于 2026年9月6日

错误报告

□ 说明

!'行停止,包括当祖先目录与dir/**`'图案相匹配时停止。 gi 重新包括在这种情况下,因为QQ/QX排除了QQ本身的 * 内容 * ,所以 “你不能重新包含在被排除在外的目录中”规则绝不开火。

  • 重写

嘘 git init -q. dvc init -q (英语). mkdir -p 卷/函数 触摸卷/函数/代诺.json卷/函数/其他.py dvcignore >.gitignore 页面存档备份,存于互联网档案馆. dvcignore >.gitignore

git check-ignore - q 卷/函数/ deno.json QQ回声"git:被忽略"QQ回声"git:不被忽略" dvc check-ignore -q 卷/函数/deno.json QQ回声"dvc:被忽略"QQ回声"dvc:不被忽略".

卷/函数/ deno.json git: 不忽略 dvc: 被忽略 <--differs 卷/函数/ 其他.py git:被忽略 dvc:被忽略


" dvc" 3.67.1, " pathspec" 1.1.1, "git" 2.55.0, Python 3.14, Linux. 同一判决出自
库(`DvcgnoreFilter.is ignored file'),因此它不是一个“检查-ignore”——只比方
在#10122中讨论的那个.

二控件,所以变量被固定

* ** 现今的 plain 否定著作。 ** " ignore.txt " + " ! no-ignoore.txt " 根基: git和dvc同意,
两个APIs。 无论第10122节的内容是什么,这不是重复。
* 播放 和 Dvc 对。 ** 加上 " 量/功能/ " + " ! " 量/功能/干 " ;
git * 也* 拒绝重新包含(目录本身被排除在外), dvc 表示相同. 这么说
变量是... 而不是否定

在哪里发生

`DvcIgnorePatters. ignore' 走路径的祖先前缀,在第一个路径上断开
匹配,这是git规则的正确形状。 祖先通过测试
QQFind  matching pattern , 对于目录来说,它也尝试了`路径+"/' :

[Python]
路径 = [路径]
如果为 dir而不是路径.ends with ("/") :
路径。附录(f"{path}/")

路径 ' 汇编出数量/功能/---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 探针串 " 量/功能 " 。 所以祖先被排除, 循环中断在'i = 2', 和“! 量/功能/ deno.json” 赢的基名从未达到。

跟踪- slash 探测器不能简单地丢弃: 一个真正的目录模式 QQ/ ' 编译到 `^X(?P/)' 并需要它。 所缺少的,是区分一种排除 并且只排除它下面的东西

值得在选择固定之前先知道:在同一两行中, pathspec.GitIgnoreSpec. from lines (.). match file ("卷/函数/deno.json")' 返回假' ——正确答案. 您已经依赖解决这个案件; 它是 Dvc 自己的 祖先的行走与它不同。

我是如何找到的,多么罕见

我维持一个符合规则的长凳,将工具与规则上的`git check-ignore-no-index'进行比较 从真实的存储器中获取的文件 Dvc在其中,因为它是我能找到的一个项目 . . . . . . .