Ala*_*yne 7 mercurial hgignore
谁能告诉我为什么mercurial显示'hg status'命令的被忽略文件?
这是mercurial确实忽略文件的确认:
$ hg addremove
$ hg commit
nothing changed
Run Code Online (Sandbox Code Playgroud)
现在,看一下状态输出.我在上面的行之后立即运行了这个.(打印输出是部分的,删除了可识别的文本)
$ hg status
? Core/target/Core-0.0.1-SNAPSHOT-tests.jar
? Core/target/Core-0.0.1-SNAPSHOT.jar
? Core/target/classes/META-INF/MANIFEST.MF
? Core/target/classes/xxx/yyy/zzz/X.class
? Core/target/classes/xxx/yyy/zzz/XBackup.class
? Core/target/classes/xxx/yyy/zzz/XBackupInput.class
? Core/target/classes/xxx/yyy/zzz/XBackupOutput.class
? Core/target/classes/xxx/yyy/zzz/XImpl$GetResultsAndStatistics.class
? Core/target/classes/xxx/yyy/zzz/XImpl$MonitoringMode.class
? Core/target/classes/xxx/yyy/zzz/XImpl$UpdateMode.class
? Core/target/classes/xxx/yyy/zzz/XImpl.class
? Core/target/classes/xxx/yyy/zzz/XIsFullException.class
? Core/target/classes/xxx/yyy/zzz/XSource.class
? Core/target/classes/xxx/yyy/zzz/XUsageException.class
? Core/target/classes/xxx/yyy/zzz/CheckResults.class
? Core/target/classes/xxx/yyy/zzz/Noise.class
? Core/target/classes/xxx/yyy/zzz/core/DateTimeGenerator$TemporalMeasure.class
? Core/target/classes/xxx/yyy/zzz/core/DateTimeGenerator.class
? Core/target/classes/xxx/yyy/zzz/core/LoggingConfigurator.class
? Core/target/classes/xxx/yyy/zzz/core/ManagedIterator.class
? Core/target/classes/xxx/yyy/zzz/core/NetworkUtils.class
? Core/target/classes/xxx/yyy/zzz/core/StackTraceUtils.class
? Core/target/classes/xxx/yyy/zzz/core/Summarisable.class
? Core/target/classes/xxx/yyy/zzz/core/TimingUtils.class
? Core/target/classes/xxx/yyy/zzz/core/XMLStaticStringUtils.class
? Core/target/classes/xxx/yyy/zzz/core/Zipper.class
...
Run Code Online (Sandbox Code Playgroud)
在状态打印输出中显示了一千行这些被忽略的文件; 这是一个严重的guff.
我怎么能摆脱这个?
谢谢
更新:
这是我的.hgignore文件.
syntax:glob
.metadata*
syntax:regexp
^target.*$
^[^/]*/target.*$
^[^/]*/[^/]*/target.*$
^bin.*$
^[^/]*/bin.*$
^[^/]*/[^/]*/bin.*$
Run Code Online (Sandbox Code Playgroud)
更新:
修改了正则表达式* - >.*
您的正则表达式语法错误.你有这个:
syntax:regexp
^target*$
Run Code Online (Sandbox Code Playgroud)
这意味着"忽略以目标开头并以星号结尾的任何内容
哪个不能忽略这些:
Core/target/classes/META-INF/MANIFEST.MF
Core/target/classes/xxx/yyy/zzz/X.class
Run Code Online (Sandbox Code Playgroud)
有两个原因 - 他们从Core/没有开始,target他们不以星号结束.
你可能意味着什么:
syntax:regexp
^.*/target/.*$
Run Code Online (Sandbox Code Playgroud)
它匹配其中的任何/target/内容(注意它.*在正则表达式中*是用于glob样式).然而,^并且$只用于根你的正则表达式并且你不希望它扎根 - 你想在字符串中的任何地方找到它,所以只需这样做:
syntax:regexp
/target/
Run Code Online (Sandbox Code Playgroud)
所有这一切的线索是文件被标记为?哪个意味着没有被忽略而没有被添加,如果它们被忽略,你根本不会看到它们而不添加--ignored到status命令.
非常感谢大家对此的帮助。我还没有找到问题的答案,但我确实找到了解决问题的方法。所以我假设在修改 hgignore regexps Mercurial 时的某个时候,它会感到困惑并损坏它的内部数据......或者其他什么。我不太了解内部情况,无法知道这可能是什么。
无论如何,如果你发现自己处于同一条船上,这就是我所做的:
恢复所有添加的文件。我使用了以下内容,因为我在 Linux 上。(感谢另一张关于 SO 的单独问题的海报 - 不幸的是我现在找不到了)
汞状态-an0 | xargs -0 hg 恢复
重复上述步骤,直至不再起作用。就我而言,有时连续恢复多达 3 次!(不知道它实际上在做什么:()
您现在应该不再在 hg status 输出中看到被忽略的文件。
抱歉,我不知道为什么会这样,或者最初的问题是什么。如果有人这样做,我很想知道你的想法。
再次非常感谢大家:)
| 归档时间: |
|
| 查看次数: |
6159 次 |
| 最近记录: |