3

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

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

我不太确定手册页

4

4 回答 4

5

尝试:

syntax: glob
_notes/*

我可能应该提到,如果已经添加了目录,则不能忽略它们。如果您使用的是较新的 Mercurial 版本,请使用 hg forget,就是这种情况。

于 2010-04-14T09:44:28.837 回答
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
于 2010-04-14T09:55:54.230 回答
0

正如您的评论所揭示的,您无法使其工作的原因是已经在存储库中优先于 .hgignore。(想象一下,如果 .hgignore 优先,可能会出现令人讨厌的问题!弄乱一个正则表达式,您可能会停止跟踪一半的回购)

要从 repo 中删除东西,你可以使用hg removeor hg forget(它是 hg 的别名remove -Af)。您可能希望使用hg forget它,因为这会将其从存储库中删除,但不会删除本地副本;hg remove将(没有 -Af)也删除本地副本

于 2010-04-14T10:26:35.253 回答
-1

这将完成这项工作:

syntax: regexp
/_notes/

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

这将列出 hg 通过 .hgignore 成功忽略的所有文件,在将任何内容添加到存储库之前进行调试非常有用。

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

于 2010-04-14T11:25:22.250 回答