Eclipse:“更新SVN缓存”挂起并锁定

40
每次我启动Eclipse时,程序开始执行"Update SVN cache"操作,但它会永远停留在0%。在此操作完成之前,我无法执行任何操作(如检出我的项目、构建它们或甚至运行它们)。而且,每当我尝试在编辑器中输入任何内容时,整个程序都会冻结,我不得不终止该进程。
我已经搜索了几天的谷歌,寻找这个问题的答案,但仍然没有找到答案。是否有其他人遇到过类似的问题并找到了解决方法?
我想补充说明,我尝试重新安装Eclipse、所有插件和JDK。但似乎什么都没用。

1
是的,那不完全取决于我。 - kevin
1
你知道你可以让 Git 代替你与 SVN 进行交互吗?这样你可以使用 Git,但看起来好像是在使用 SVN。 - Aaron Digulla
1
嗯,看起来我解决了它。我更新到了最新版本的Subclipse,现在不再有问题了。 - kevin
2
我的临时解决方案是先不安装Subclipse,暂时使用TortoiseSVN。 - Peter Tseng
15个回答

24

我也遇到了同样的问题,尝试通过在Eclipse中禁用大部分SVN性能设置来解决:

  • Windows > Preferences > Team > SVN > Performance

或者(对于最新版本):Windows > Preferences > 版本控制(Team) > SVN > 性能

  • 禁用:计算深度输出状态、缓存、持久化SSH

Eclipse中的SVN性能设置


4
在 Kepler 中,您可以在“团队 > SVN > 标签装饰”菜单中找到它。“性能”菜单不存在。 - nanospeck
1
@nanospeck 我在使用Eclipse Oxygen时也遇到了同样的问题,即“性能”菜单不见了。 - Renaud is Not Bill Gates
团队中会有两个 SVN,或者您没有使用正确的 SVN 插件。 - Ashish

9

我遇到了这个问题,并成功解决了。这是在基于Juno的Zend Studio 10.5中发生的。我的工作区有大约五个项目,其中一个项目是打开的。因为正在等待“更新SVN缓存”,所以我无法关闭该项目。

  • 在关闭Eclipse后,我通过命令行进入到我的打开的项目中,然后运行“svn cleanup”。
  • 在workspace/.metadata/.plugins/org.eclipse.team.svn.core中,我有一堆临时目录。我创建了一个备份tar包,然后将它们全部删除。

这些操作都没有解决问题。最后我尝试了这个方法:

  1. 在关闭Eclipse后,我进入到我的项目目录并将.project重命名为project.xml。
  2. 重新打开Eclipse,所有项目都处于关闭状态,没有出现SVN更新消息。
  3. 重启Eclipse。
  4. 打开项目,但Eclipse报告找不到.project文件。
  5. 关闭Eclipse。
  6. 进入我的项目目录并将project.xml重新命名为.project。
  7. 重启Eclipse。
  8. 打开项目,一切顺利。我成功提交了更改。

到目前为止,我的workspace/.metadata/.plugins/org.eclipse.team.svn.core目录仍然是空的。

我不知道我尝试的前两个方法是否有所帮助,或者只是将.project文件重命名以强制关闭项目是否就足够了。下次再遇到这种情况(肯定会有下一次),我会尝试直接强制关闭项目并报告结果。


1
只需要在项目根目录中运行svn cleanup就可以了。谢谢! - pfac

7
在我的情况下,我意识到一个与Tortoise SVN浏览器相关的窗口仍然处于打开状态。它可能锁定了缓存,导致Eclipse一直等待解锁。
这不是针对问题的直接回答,但对于犯类似错误的人可能会有所帮助。

6

你并不是唯一遇到这个问题的人(请参见这个错误报告这个论坛帖子),但很可能不是Eclipse本身的bug。下一步操作:

  1. 获取线程转储以查看是否存在死锁或线程正在等待从未发生的事情(在错误报告中,它在System.loadLibrary()处挂起)。您可以使用附带SDK的jconsole完成此操作。

  2. 使用另一个SVN工具(命令行svn或TurtoiseSVN(如果您使用Windows))检查您工作区中所有使用SVN的打开项目,确保数据结构没有损坏。

  3. 获取最新版本的Eclipse和/或SVN插件。

  4. 尝试使用不同的连接器。有些人使用JNI解决方案javahl更好,而有些人则使用纯Java SVNKit更好。


4
  1. 打开 Windows > Preferences > Team > SVN > Performance
    • 关闭:计算深度传出状态,缓存,持久SSH
  2. 前往Preference -> General
    • 启用:始终后台运行
    • 启用:显示堆栈状态
    • 工作台保存间隔时间(分钟):9999
    • 这将在eclipse中显示您的内存使用情况。
  3. 然后编辑您的eclipse.ini文件并更改Xms和Xmx值为以下内容: -launcher.XXMaxPermSize 512m -Xms1024m -Xmx1024m

2
最好能够解释一下为什么需要这样做或者解决了什么问题。 - Eiko
第一组更改:禁用 SVN 缓存可以防止在 Eclipse 外部编辑时锁定 SVN 数据库(这是非常普遍的情况)。它还可以防止 Eclipse 在扫描文件系统上检测到更改时出现崩溃。 - luis.espinal
第二组更改会在后台分叉时构建和扫描,以免打断您的工作。我不会将我的工作台保存间隔设置为9999(可能只是60分钟),但我肯定会将其增加到5以上,因为它非常具有破坏性。 - luis.espinal
在第二组更改中,当您启用显示堆状态时,您可以看到jvm内存的使用情况,并且当内存不足时(它有助于解释何时以及什么导致Eclipse运行缓慢)。 - luis.espinal
最后一组更改取决于您可用的内存量和其他正在运行的事项。但对于开发而言,这似乎是一个不错的值集(其中有许多可能的值集)。 - luis.espinal

3

当我在工作区两次拥有相同的项目时,我遇到了这个问题。确保你在工作区只有一份副本,也许会有帮助。


2

我之前也遇到了类似的问题,通过在Windows->Preferences->Team->SVN->Label Decorations中取消“为文件夹计算深度传出状态”选项来解决了这个问题。


2
可能是Eclipse内存问题。我曾经遇到过类似的问题,直到我按照以下步骤进行操作:
1. 进入“首选项->常规”,并设置以下数值:
-Xms1024m
-Xmx1024m
这将显示Eclipse中的内存使用情况。
2. 然后编辑您的eclipse.ini文件,并将Xms和Xmx值更改为上述值。
查看内存状态,希望能有所帮助。

1

这个主题帮助我解决了有关我的eclipse svn更新阻塞的问题。

我正在使用eclipse mars,在这种情况下出现了问题。

  1. 首先,我删除了两个我不需要的项目 - 以减少工作区中的项目数量。
  2. 在eclipse.ini中更改参数也没有帮助。
  3. 我在我的eclipse设置中加入了-clean参数,所以我也将其删除,希望它会运行得更好。这有点帮助,所以eclispe运行时间更长了,但是没有太多改进。rockfarkas 这里给了一个提示。
  4. 最后真正有用的是从项目视图中非常快地选择所有项目 CtrlA 并通过上下文菜单关闭它们,同时SVN缓存仍在运行。其中一半可以完成,而另一半则不能,但是之后,我可以看到SVN高速缓存正在改变其状态,因此我又可以工作了。下一步是关闭其余的项目,并逐个打开。我是通过阅读user3096856的文章得到这个想法的。

1
我在eclipse中发现了一个索引错误,阻止了svn。另一个项目资源和svn仓库位于.metadata\.plugins\org.eclipse.core.resources\.projects\ProjectName\4.tree和其他资源中。

svn cleanup与之前的答案'Team > SVN > Performance'无法解决我的问题。

'eclipse.exe -clean'会使eclipse的cpu占用率达到100%,导致无响应。

唯一的解决方案是在退出eclipse后手动删除org.eclipse.core.resources\.projects\*文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接