【问题标题】:.hgignore syntax for ignoring only files, not directories?.hgignore 语法只忽略文件而不是目录?
【发布时间】:2009-06-26 11:30:40
【问题描述】:

我有一个我似乎无法理解的问题。我在 Windows 上使用 TortoiseHg(版本 0.7.5),但在 Linux 上我有同样的问题。这里是:

我的.hgignore 文件:

syntax: regexp
^[^\\/]+$

我想要实现的是将 hg 存储库根目录中的文件添加到忽略列表中。

例如,如果我有这样的:

.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2 
.hgignore

我希望忽略 myfile1(2) 和 anotherfile1(2)(名称仅用于本示例的目的 - 它们没有可以轻松放入 hgignore 文件的简单规则)

我是否缺少某些东西,因为我很确定正则表达式是好的(我什至测试过它)?想法?

有没有更简单的方法来实现这一点? [添加到 mercurial 存储库根目录中的忽略列表文件]

【问题讨论】:

    标签: regex mercurial dvcs hgignore


    【解决方案1】:

    我在 irc.freenode.net 上的 #mercurial 中转发了这个问题,得到的答复是您无法区分文件和目录 - 匹配的目录没有您在正则表达式中搜索的斜线。

    但是,如果您可以假设您的目录永远不会包含句号 .,但您的文件会包含,那么这样的事情似乎可行:

    ^[^/]*\..*$

    我在这样的存储库中对其进行了测试:

    %汞状态-ui ?一个.txt ? bbb ? foo/x.txt ?富/年

    添加.hgignore 文件给出:

    %汞状态-ui ? bbb ? foo/x.txt ?富/年 我.hgignore 我一个.txt

    这表明a.txt 文件在您的根目录中被正确忽略,但foo 子目录中的x.txt 则不是。您还可以看到根目录中名为 bbb 的文件没有被忽略。但也许您可以自己将此类文件添加到 .hgignore 文件中。

    如果你的根目录中碰巧有一个类似bar.baz 的目录,那么这个目录和其中的所有文件都将被忽略。我希望这会有所帮助。

    【讨论】:

    • 非常感谢,它证实了我的信念。
    • 您也可以对子目录执行此操作并忽略 php 文件,例如:wpblog/[^/]*\.php$
    【解决方案2】:

    这是一个肮脏的把戏:

    在您的目录中创建一个空文件“.hidden”,而不是添加到 .hgignore:

    ^mydir/(?!\.hidden).+$
    

    这将忽略目录中除“.hidden”之外的所有文件。

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多