如何防止 TortoiseSVN 数据库锁定?

How can I prevent TortoiseSVN database locking up?

我有一台装有最新 TortoiseSVN 版本 (1.11.0 x64) 的 Windows 7 PC。几乎每次我想向服务器提交更改时,都会收到以下错误:

Commit failed (details follow):
Failed to load properties: sqlite[S5]: database is locked
Error unlocking locked dirs (details follow): sqlite[S5]: database is locked

Another process is blocking the working copy database, or the underlying filesystem does
not support file locking; if the working copy is on a network filesystem, make sure file
locking has been enabled on the file server.

修复起来很容易 - 我只需转到项目根文件夹,进行 SVN 清理,然后提交工作正常。但是,如果我想在几分钟后再次提交,它很可能会再次失败并迫使我进行另一次清理。它变得真的烦人。

有什么方法可以防止这些锁定的发生吗? 我可以在 TortoiseSVN 上更改任何设置吗?

更多细节:

编辑:问题实际上并不是由 Eclipse 本身引起的。它要么是 Subversive 插件,要么是 SVNKit 连接器。我已经切换到 Subclipse 和 JavaHL,问题已经完全消失了。我没试过Subclipse+SVNKit,也没试过Subversive+JavaHL,我猜这些组合中的一个也能解决问题,另一个不会。


看来问题出在Eclipse上。我们通常这样构建我们的 SVN 项目:

/trunk
  /docs
  /etc
  /scripts
  /source
    /pom.xml
    /src/main/...

我签出整个主干(或某个分支),然后将源项目导入 Eclipse。

为了管理代码更改,我在 Eclipse 中使用了 SVN 同步视图,它比 TortoiseSVN 更加用户友好(只是我的看法)。对于 /source 文件夹之外的更改,我必须使用 TortoiseSVN,因为这些文件不在 Eclipse 中。

问题显然是,Eclipse 有一些后台进程 "updates the SVN cache" 每隔几分钟,即使您没有对该项目进行任何更改,只是在工作区中打开它也是如此。它搞乱了 TortoiseSVN,因此出现错误,除非我执行清理。

There is an option 在 Eclipse 中,在 Team > SVN > Performance 下,它允许禁用 SVN 状态缓存...但我上次尝试时,它并没有阻止这个问题,它只是让 Eclipse SVN 同步速度较慢。

我想我在这里唯一的选择是为 Eclipse 和 TortoiseSVN 使用不同的结帐文件夹(呃......),或者在 Eclipse 中禁用 SVN 并始终使用 TortoiseSVN(呃......)。

我也认为锁是eclipse插件引起的。这里有一些关于我的设置以及我如何解决这个问题的更多细节:

Tortoise:TortoiseSVN 1.12.2,内部版本 28653 - 64 位,2019/08/04 13:03:09

Subversion:Subversion 1.12.2,-release

Eclipse:Spring 工具套件版本:3.9.6.RELEASE(eclipse Eclipse 2018-09 (4.9.0))

eclipse 中的 SVN 插件:

  • 颠覆性修正图(可选)4.0.0.I20160226-1700
  • 颠覆性 SVN 连接器 6.0.4.I20161211-1700
  • 颠覆性 SVN Team Provider 4.0.5.I20170425-1700
  • SVNKit 1.8.14 实现(可选)6.0.4.I20161211-1700
  • M2E项目的颠覆性SVN集成(可选)4.0.0.I20160226-1700

卸载最后一个(可选)插件后 ("Subversive SVN Integration for the M2E Project") explorer's tortoise 上的锁不再发生。

所以我很高兴,因为我在 eclipse 中使用的所有功能仍然有效,资源管理器中的 tortoise 也有效。通常我只在 eclipse 中使用 "team/show annotation" 上下文菜单,我在 explorer 中通过 tortoise 做的所有其他 SVN 东西。