【问题标题】:.hgignore directory "_notes" throughout repository tree?整个存储库树中的.hgignore 目录“_notes”?
【发布时间】:2010-04-14 09:41:58
【问题描述】:

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

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

我不太确定手册页

【问题讨论】:

  • 我是否必须删除“_notes”目录才能让 mercurial 忽略它?我在创建 .hgignore 文件之前添加了这些文件夹。
  • 是的,你需要先使用 hg remove 或 hg forget,可能你想要 hg forget
  • 难怪它不起作用 :-) 非常感谢!

标签: mercurial hgignore


【解决方案1】:

试试:

syntax: glob
_notes/*

我应该提一下,如果已经添加了目录,则不能忽略它们。如果您使用的是较新的 Mercurial 版本,请使用 hg forget。

【讨论】:

  • 似乎不起作用...我是否必须删除“_notes”目录才能让 mercurial 忽略它?我之前添加了这些文件夹,然后添加了 .hgignore。
  • 它确实对我有用,除了它没有像我想象的那样忽略 ./_notes。我所做的更改解决了这个问题,它应该特定于目录。
【解决方案2】:

.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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      这样就可以了:

      syntax: regexp
      /_notes/

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

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

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

      【讨论】:

      • 我认为这不能正常工作;它将忽略任何以 _notes 开头的文件和目录,而不仅仅是那些完全命名为 _notes 的文件和目录。
      • 这样更好吗,劳伦斯?以前用过,我测试过!如果你对这个答案感到满意,你可以投票吗:-)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 2013-01-29
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多