#304·hatch

支持非根 VCS 忽略

作者: sorcio创建于 2022年7月2日更新于 2026年8月12日
标签bug

[.gitignore] (https://git-scm.com/docs/gitignore) 文件不必活在工作目录的根部:

图案从路径所在的同名目录中的.gitignore文件读取,或者在任何父目录(上到工作树的上层)中读取,较高级别文件中的图案被下到包含文件的目录中的图案所覆盖. 这些图案与.gitignore文件的位置相匹配.

Hatchling 假设最多有一个.gitignore文件,并且它描述了相对于工程根的路径. 这在几个方面与git的行为不符:

1)如果.gitignore在项目根的任何祖先中被找到,则路径相对于错误路径被解释. 这个问题也被传播给sdists,因为.gitignore文件被作为-is复制到源目录.

< 细节> <摘要>示例</摘要>

иre
. 吉蒂格诺尔
└──
[永久失效連結] LICENSE.txt
读取
QQ 忽略 我
├──
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
(原始内容存档于2017-09-29). QQ.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
测试
(原始内容存档于2018-09-22). QQ.

.gitignore可能包含 " foobar/ignoore me " 模式,它足够有效。 但Hatchling将无法应用模式排除忽略 我. 如果内部的 " foobar " 目录中恰好有同名文件,则将不慎排除在外。 </详情>

  1. 被忽略的每个指令.gitignore文件.

我不使用Mercurial了, 但我想1会应用在那里。 Mercurial限制.hgignore文件活在repo的根上,所以不可能有多个. 但你可以在Hg Repo的子目录里有个项目

如果Hatch/Hatchling能像VCS那样做就好了.

-- -- . . .

我不知道1的解决方案是否涉及在斯地克建筑时间重写.gitignore,使相对项目目录(或将修改过的图案写入斯地克平面项目)的相对图案(有‘/'不是结尾的图案). toml 而不是包含.gitignore文件).

. . . . . 意思是,当父母旅行时,你无法在发现的第一个.gitignore时停下来,因为上面可以有一个更普通的。 当到达工作树根时(即发现".git"时), Traversal应该停止. 但当你打开一个sdist 你没有.git。

我甚至不想开始思考子模块.