Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial hg状态显示忽略的文件_Mercurial_Hgignore - Fatal编程技术网

Mercurial hg状态显示忽略的文件

Mercurial hg状态显示忽略的文件,mercurial,hgignore,Mercurial,Hgignore,有人能告诉我为什么mercurial会为“hg status”命令显示被忽略的文件吗 以下证实mercurial确实忽略了这些文件: $ hg addremove $ hg commit nothing changed 现在,看看状态输出。我在上面几行之后立即运行了这个。(Prinout是部分的,删除了可识别文本) 在状态打印输出中显示了上千行被忽略的文件;那是一些严肃的废话 我怎样才能摆脱这个 谢谢 更新: 这是我的.hg文件 syntax:glob .metadata* sy

有人能告诉我为什么mercurial会为“hg status”命令显示被忽略的文件吗

以下证实mercurial确实忽略了这些文件:

$ hg addremove
$ hg commit 
nothing changed     
现在,看看状态输出。我在上面几行之后立即运行了这个。(Prinout是部分的,删除了可识别文本)

在状态打印输出中显示了上千行被忽略的文件;那是一些严肃的废话

我怎样才能摆脱这个

谢谢

更新:

这是我的.hg文件

syntax:glob
.metadata*

syntax:regexp
^target.*$
^[^/]*/target.*$
^[^/]*/[^/]*/target.*$
^bin.*$
^[^/]*/bin.*$
^[^/]*/[^/]*/bin.*$
更新:


修改了一点点的regexp*->.

并不意味着被忽略

这只是意味着mercurial没有跟踪该文件

如果你不想看到他们,就这么做吧

汞状态-马尔德

i、 e.仅显示Jerome在问题中评论的修改、添加、删除、删除,如果您的配置可能有所帮助

出现问题的一个(无可否认的奇怪)原因可能是
.hgignore
文件与
addremove
命令的exclude相结合的权限问题

我可以通过撤销忽略文件的任何读取权限,并使用
-X“**/target/**”
作为
addremove
命令的默认选项(可以在任何可能的Mercurial配置文件中设置)来重现您的情况:

hg
读取忽略文件失败,因此不知道应该忽略目标内容。来自
hg
的相应警告在这里会有所帮助


此问题已更新,以回应Jerome的评论。

非常感谢大家在这方面的帮助。我还没有找到这个问题的答案,但我确实找到了解决办法。因此,我假设在修改hgignore regexps mercurial时,它的内部数据会变得混乱和损坏。。。或者别的什么。我不知道足够多的内部结构,不知道这可能是什么

无论如何,如果你发现自己也在同一条船上,我会这么做:

  • 确保你的.hgignore文件说明了你想要它做什么,并且所有以hg状态出现的文件都是你想要忽略的文件
  • 添加要忽略的所有文件。HgAddRemove不起作用,因为它尊重hgignore的内容,所以我使用Eclipse的hg插件手动创建了每个文件(我将它们全部选中,Eclipse将添加分别应用于它们)
  • 还原所有添加的文件。我使用下面的代码是因为我在linux上。(感谢另一张关于SO的单独问题的海报——不幸的是,我现在再也找不到了)

    汞状态-an0 | xargs-0汞柱

  • 重复上述步骤,直到它不再工作。在我的情况下,这有时是多达3个连续还原!(不知道它到底在做什么:()

  • 承诺
  • 您现在应该不会再在hg状态输出中看到被忽略的文件了

    对不起,我不知道为什么会这样,也不知道最初的问题是什么。如果有人知道,我很想知道你的想法


    再次感谢大家:)

    您的regexp语法错误。你有这个:

    syntax:regexp
    ^target*$
    
    这意味着“忽略任何以target开头并以星号结尾的内容”

    它没有忽略这些:

    Core/target/classes/META-INF/MANIFEST.MF
    Core/target/classes/xxx/yyy/zzz/X.class
    
    有两个原因——它们以
    Core/
    开始,而不是
    target
    结束,并且不以星号结束

    你的意思可能是:

    syntax:regexp
    ^.*/target/.*$
    
    它与任何包含
    /target/
    的内容相匹配(注意,它在regexp
    *
    中是用于glob样式的
    *
    )。但是
    ^
    $
    仅用于根化regex,而您不希望根化它——您希望在字符串中的任何位置找到它,所以只需执行以下操作:

    syntax:regexp
    /target/
    
    这一切的线索是,文件被标记为
    ,这意味着未被忽略和未被添加,如果忽略它们,如果不将
    --已忽略
    添加到status命令中,您将根本看不到它们。

    您的.hgignore文件显示“^target”忽略,但文件位于核心/目标中。因此忽略行应该是“target”(不带^)或“^Core/target”

    还是我错过了什么


    (注意:^表示正则表达式匹配从路径的开头开始,即仅匹配以目标开头的路径!)

    我遇到类似问题,因为我更改了某些文件的字母大小写。所以之前我得到了一个名为“sitenav.ext”的文件,将其重命名为“sitenav.ext”,并开始出现类似的问题——当我尝试“hg st”时,我得到了“?sitenav.ext”。 修复很容易 重命名为“_siteNav.ext”, addremove, 犯罪 重命名回“siteNav.ext”, addremove,
    承诺->利润

    也有同样的问题,鲍勃的回答对我起了作用


    如果您使用的是Ortoisehg,您可以在上下文菜单(窗口)中选择“编辑忽略过滤器”来验证和更改您的.hgignore设置。

    我想海报已经注意到了这一点,但想知道为什么它们会被列为未跟踪,即使它们应该在
    hg addreomve;hg commit
    已发布。Euch。这是可行的,但有两个问题。1) 我和我的所有团队成员都必须在每次运行status时输入额外的内容。那太差劲了。更麻烦的是,2)IDE集成或其他仅运行hg status的自动化进程将获得虚假输出。@Oben。它似乎与声明的文档不一致,例如:对不起,理解错误。您使用的是哪个版本的Mercurial?您的
    .hgignore
    文件看起来怎么样?
    hg verify
    ?@Oben版本中的任何有用信息都是1.8。hgignore文件已添加到原始帖子中。hg verif ydoesn除了“检查…”行之外,没有其他内容,文件和变更集的数量在您的配置中可能有些奇怪:w
    syntax:regexp
    ^.*/target/.*$
    
    syntax:regexp
    /target/