【发布时间】:2014-11-27 16:31:53
【问题描述】:
我有一个非常大的 svn 存储库。当我尝试使用它(提交、更新等)时,它说有锁。
当我运行“svn cleanup”时,它说工作副本太旧,我需要升级它。
当我运行 'svn upgrade' 时,它会运行,但什么也没说。
我还在 repo 上运行了“svnadmin upgrade”,以防万一。
我安装了最新的 TortoiseSVN。
通常,如果我有 SVN 怪异,我会将文件移出、更新、移回文件,但正如我之前提到的,这是一个非常大的存储库。
任何帮助将不胜感激。
谢谢!
具体信息:
>svn update
svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
svn: E155004: Working copy '*****' locked.
svn: E155004: '*****' is already locked.
>svn cleanup
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: The working copy at '*****' is too old (format 29) to work with client version '1.8.1 (r1503906)' (expects format 31). You need to upgrade the working copy first.
>svn upgrade
>
更新 1: 我安装了 1.7.X 客户端并尝试运行清理。它抱怨说,由于某种原因,回购不是工作副本。我尝试使用相同的 1.7.X 客户端进行更新并收到以下消息:
>"c:\Program Files\SlikSvn\bin\svn.exe" update
svn: E155021: This client is too old to work with the working copy at '*****' (format 31).
You need to get a newer Subversion client. For more details, see http://subversion.apache.org/faq.html#working-copy-format-change
所以,这个客户端的 repo 是格式 31。tortoisesvn 认为它是格式 29。现在我更困惑了。
更新 2: 回复@David W
Is this about a working copy or the repository?
工作副本。虽然我也在 repo 上尝试了 svnadmin upgrade 。但是,我使用的 svnadmin 是 1.8.1。我只是尝试使用 TortoiseSVN 一(1.8.10)升级 repo,但这并没有解决问题。
is this about a file that's locked because someone locked it, or because your working directory is locked due to an incomplete
我是唯一一个使用 repo 的人,所以我知道没有其他人锁定它。这可能是由于操作不完整。
我用 1.8.10 运行 svn status,但没有任何东西有“K”。有一些文件带有“L”,一个带有“?”。列出的所有项目都是目录,而不是文件,但标有“?”的项目除外。
如果我运行“svn lock --force dirname”,它将响应该特定节点“不是文件”。当我在标有“?”的文件上运行它时,它响应说该节点“未找到”。
Then, there is a locked working directory because of an incomplete operation...
是的,你叫它。这就是为什么所有东西都标有“L”的原因,我想。
当我运行清理 (1.8.10) 时,它给了我在最初的问题中报告的相同错误(格式 29 对于此格式 31 客户端来说太旧了)。
Remember that you can always delete a working directory and create a new one
是的。如果我删除工作副本中的任何目录并点击更新,它会抱怨它已被锁定。由于格式不匹配,我无法清除锁定。理论上我可以重新签出整个 repo,然后将内容复制回来,但 repo 是 12GB(210,000 个文件)。
Be careful about mixing up Subversion clients
所以,我不知道我有两个客户端,但我只使用 TortoiseSVN (1.8.10)。我今天才发现,当我尝试进行故障排除时,我有两个。
* 更新 3:解决方案 * 使用@David W 的提示,这是我解决问题的方法: 1)备份我的 .svn 文件夹 2) 从https://github.com/sqlitebrowser/sqlitebrowser/releases 下载了一个 SQLite 编辑器 3) 打开我的 wc.db 文件并浏览 WC_LOCK 表。该表中有 1 个条目,我将其删除。 4) 尝试使用 TortoiseSVN (1.8.10) 运行清理,之前抱怨锁。它终于奏效了! 5) 尝试在我的仓库中运行命令(更新、提交等),一切都很顺利。
感谢所有帮助过我的人,尤其是@David W,他们没有放弃我。
【问题讨论】:
-
这可能是一个与 Tortoise 无关的命令行 SVN:它说的是 1.8.1,而最新的 Tortoise 是 1.8.10。鉴于它说这是一个 1.7.x WC(格式 29),您可以尝试获取 1.7 命令行 SVN 并使用它运行
svn cleanup,然后再返回您的 1.8.x 客户端进行升级。 -
我也通过 TortoiseSVN 尝试了这两个命令,但错误相同。理论上,这是一个 1.8.X 客户端尝试该命令。我将尝试您所说的并写回结果。谢谢!
-
我尝试了您的建议并使用结果编辑了问题。 TL;DR:1.7 客户端认为 repo 是格式 31,tortoiseproc (1.8.10) 和 svn (1.8.1) 都认为它是 29。所以很困惑。
标签: windows svn tortoisesvn