Mercurial hg状态显示忽略的文件
有人能告诉我为什么mercurial会为“hg status”命令显示被忽略的文件吗 以下证实mercurial确实忽略了这些文件:Mercurial hg状态显示忽略的文件,mercurial,hgignore,Mercurial,Hgignore,有人能告诉我为什么mercurial会为“hg status”命令显示被忽略的文件吗 以下证实mercurial确实忽略了这些文件: $ hg addremove $ hg commit nothing changed 现在,看看状态输出。我在上面几行之后立即运行了这个。(Prinout是部分的,删除了可识别文本) 在状态打印输出中显示了上千行被忽略的文件;那是一些严肃的废话 我怎样才能摆脱这个 谢谢 更新: 这是我的.hg文件 syntax:glob .metadata* sy
$ 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时,它的内部数据会变得混乱和损坏。。。或者别的什么。我不知道足够多的内部结构,不知道这可能是什么 无论如何,如果你发现自己也在同一条船上,我会这么做:
再次感谢大家:)您的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/