22

我有一个非常烦人的问题,我试图将我们的主干合并到我的分支中以进行一些更新。我每天都这样做,但几乎每一天我都会收到以下错误:

Error - 'D:\Code\Website' is already locked via 'D:\Code\Website'.

只有非常随机地不会发生此错误,并且我能够成功地将主干合并回分支。但是,我整天都在尝试从后备箱中获取最新信息,但没有成功。我一直在寻找这个问题的答案。所以,谷歌,互联网上的随机论坛......等等。我希望有人能解释为什么会发生这种情况。

这是我已经尝试过的:

  • 对目录中的每个文件夹运行“清理”。
  • 检查 .svn 目录中的“锁定”文件 - 不存在。
  • 打开 wc.db 文件并检查 WC_LOCK 表 - 里面什么都没有。
  • 禁用防病毒。
  • 禁用 IIS。
  • 检查了分支的新副本。
  • 更新 TortoiseSVN
  • 使用 TortoiseSVN.net (1.7.10.23359, SVN 1.7.7) 的最新 MSI 完成卸载并重新安装 TortoiseSVN。

我能够更新分支并提交它.. 从来没有问题。只是将主干合并回来导致我出现问题。团队中的其他人似乎没有这个问题(这个分支或任何其他分支)。他们可以自由地检查分支。合并主干并毫无问题地提交它。

我正在使用 TortoiseSVN。你们得到的任何帮助都会很棒!

编辑:另外,测试合并有效..但实际合并没有。

更新

事实证明,TSVNCache.exe 不断地持有 wc.db 文件的锁。我不知道为什么。即使我杀死了这个过程;一旦我通过 TSVN 合并 GUI,它会再次启动缓存并锁定它。我已经设法通过命令行成功合并..有没有办法解决缓存锁定问题以避免不得不依赖命令行?

4

4 回答 4

8

尝试关闭图标覆盖状态缓存(TSVNcache.exe 进程负责什么)

  1. 打开资源管理器窗口
  2. 右键单击任意位置,TortoiseSVN -> 设置
  3. 转到“图标叠加层”部分
  4. 选择状态缓存下的“无”单选按钮
  5. 单击应用

大概如果状态缓存被禁用并且 TSVNcache.exe 没有运行,那么它就不能锁定任何文件。您至少可以排除这是否是问题(听起来确实如此)。这是负责使用绿色复选标记、红色修改标记等更新资源管理器中的文件夹/文件图标的过程。多年来,出于性能原因,我已禁用此功能。我只是查看修改过的文件或打开提交对话框以查看哪些文件已更改。

在那之后,下一个最有可能的嫌疑人是过去经验中的索引服务(Windows 搜索)。

于 2012-11-08T02:23:37.350 回答
4

我有同样的问题。这是我所做的:

  1. 在任务管理器中杀死 explorer.exe
  2. 从任务管理器重新启动
  3. 现在合并工作......

我猜想 Windows 资源管理器会以某种方式锁定某些东西。

于 2013-12-12T20:44:47.017 回答
2

另一个对我有用而不是放弃图标覆盖的选项是将 Windows 资源管理器中的目录更改为非 svn 文件夹,这样 TortoiseSVN 不会与自身冲突。这很烦人,但如果你需要一个快速的解决方案 - 就是这样。

于 2013-07-02T12:59:27.730 回答
1

我现在有同样的问题。特别是因为我的存储库正在努力增长。

TSVNCache 锁定工作副本的指针让我思考。为什么会这样做?结论:仅在忙于更新工作副本状态(包括图标覆盖)时。

克服这个问题的一种方法正是 Joshua McKinnon 所说的:禁用图标覆盖。如果这不是您想要的解决方案(因为您想保留图标),您也可以采用不同的方法:等到 TSVNCache 完成其工作。当您打开合并窗口时,您可以看到 TSVNCache 正忙(在进程资源管理器中)。当忙碌结束时,可以安全地进行合并。从此不再有锁定问题!

于 2013-01-30T08:24:51.853 回答