保存文件时出现 Egit 错误

Egit error when saving file

自从我升级到 eclipse mars (4.5) 后,egit 在每个文件保存、每个项目 build/clean 和其他一些情况下都会抛出正则表达式 PatternSyntaxException 异常。之后,文件不会出现在未暂存的更改列表中,基本上使 egit 对该项目无用。

这是错误日志条目:

!ENTRY org.eclipse.core.jobs 4 2 2015-07-01 10:27:42.183
!MESSAGE An internal error occurred during: "Computing Git status for repository I-Sail".
!STACK 0
java.util.regex.PatternSyntaxException: Illegal repetition
{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf200
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.closure(Pattern.java:3104)
at java.util.regex.Pattern.sequence(Pattern.java:2101)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at org.eclipse.jgit.ignore.internal.Strings.convertGlob(Strings.java:352)
at org.eclipse.jgit.ignore.internal.WildCardMatcher.<init>(WildCardMatcher.java:66)
at org.eclipse.jgit.ignore.internal.PathMatcher.createNameMatcher0(PathMatcher.java:145)
at org.eclipse.jgit.ignore.internal.PathMatcher.createPathMatcher(PathMatcher.java:127)
at org.eclipse.jgit.ignore.FastIgnoreRule.<init>(FastIgnoreRule.java:112)
at org.eclipse.jgit.ignore.IgnoreNode.parse(IgnoreNode.java:114)
at org.eclipse.jgit.treewalk.WorkingTreeIterator$PerDirectoryIgnoreNode.load(WorkingTreeIterator.java:1215)
at org.eclipse.jgit.treewalk.WorkingTreeIterator$RootIgnoreNode.load(WorkingTreeIterator.java:1236)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.getIgnoreNode(WorkingTreeIterator.java:648)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.isEntryIgnored(WorkingTreeIterator.java:616)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.isEntryIgnored(WorkingTreeIterator.java:599)
at org.eclipse.jgit.treewalk.WorkingTreeIterator.isEntryIgnored(WorkingTreeIterator.java:586)
at org.eclipse.jgit.treewalk.filter.IndexDiffFilter.include(IndexDiffFilter.java:190)
at org.eclipse.jgit.treewalk.filter.AndTreeFilter$List.include(AndTreeFilter.java:163)
at org.eclipse.jgit.treewalk.TreeWalk.next(TreeWalk.java:572)
at org.eclipse.jgit.lib.IndexDiff.diff(IndexDiff.java:434)
at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.calcIndexDiffDataFull(IndexDiffCacheEntry.java:534)
at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.access(IndexDiffCacheEntry.java:523)
at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.run(IndexDiffCacheEntry.java:290)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

问题似乎只发生在 android 个项目上。其他 java 个项目以及 symfony/php 个网站运行良好。它的发生与我是否为项目创建一个新的 git 存储库无关,或者使用我的旧存储库,该旧存储库在更新之前可以正常工作。我尝试重新安装 egit 插件,但没有结果。 当我在同一个存储库的命令行中使用 git 时,一切都很好。

根据错误消息,我会说某处文件以 rtf 格式保存,而 egit 期望以纯 txt 格式保存。但是,我不知道这可能是哪个文件或如何找到它。

仅从堆栈跟踪来看,问题似乎出在某个 .gitignore 文件中;那应该包含正则表达式,{ 是正则表达式重复语法。

它可能在存储库中,或者更有可能在某个地方 egit 找到它而普通 git 没有,例如无论您的系统对 $HOME 的解释是什么。

参见:https://help.github.com/articles/ignoring-files/#create-a-global-gitignore