整个存储库树中的.hgignore目录“_notes”?

时间:2010-04-14 09:41:59

标签: mercurial hgignore

我想忽略整个存储库中的所有目录“_notes”。 _notes由dreamweaver生成,不属于项目本身,但这些目录分散在整个项目中。

不知何故^ _notes $没有在.hgignore中完成这项工作......我是否必须将.hgignore指向每个目录“_notes”或者它是否以递归方式执行?

我对手册页不太确定

4 个答案:

答案 0 :(得分:5)

尝试:

syntax: glob
_notes/*

我应该提一下,如果已经添加了目录,你就不能忽略它们。使用hg忘记如果您使用较新的Mercurial版本,就是这种情况。

答案 1 :(得分:1)

.hgignore

syntax: glob
_notes

这不是特定于目录的,因此如果您有任何具有该确切名称的文件,它们也将被忽略。

示例:

$ hg init subu && cd subu
$ mkdir _notes
$ mkdir a && mkdir a/_notes
$ echo 'syntax: glob' >>.hgignore
$ echo '_notes' >>.hgignore
$ touch file.txt
$ touch _notes/file.txt
$ touch a/file.txt
$ touch a/_notes/file.txt
$ hg st -A
? .hgignore
? a/file.txt
? file.txt
I _notes/file.txt
I a/_notes/file.txt

答案 2 :(得分:0)

正如您的评论所揭示的那样,您无法使其发挥作用的原因是已经存储在存储库中的优先级高于.hgignore。 (想象一下,如果.hgignore优先考虑可能出现的令人讨厌的问题!搞清楚一个正则表达式,你可能会停止跟踪你回购的一半)

要从回购中删除内容,您可以使用hg removehg forget(这是hg remove -Af的别名)。您可能希望使用hg forget,因为这会将其从存储库中删除,但不会删除本地副本; hg remove将(不使用-Af)删除本地副本

答案 3 :(得分:-1)

这将完成这项工作:

syntax: regexp
/_notes/

如果您想要检查存储库忽略哪些文件,您可以尝试: hg stat -i

这将列出hg通过.hgignore成功忽略的所有文件,在向存储库添加任何内容之前,它很适合调试。

!以前添加到存储库的文件不会被忽略!