无法升级SVN的工作副本

我有一个非常大的SVN回购。 当我尝试使用它(提交,更新等),它说有锁。

当我运行'svn cleanup'时,它说工作副本太旧,我需要升级它。

当我运行“svn升级”时,它运行,但没有说什么。

以防万一,我也跑了'svnadmin升级'回购。

我安装了最新的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 

所以,这个客户端的回购是格式31.tortoisesvn认为它是格式29.现在我更困惑。

更新2 :对@David W的响应

 Is this about a working copy or the repository? 

工作副本。 虽然我也尝试过使用svnadmin升级回购。 但是,我使用的svnadmin是1.8.1。 我只是尝试升级与TortoiseSVN之一(1.8.10)回购,但没有解决这个问题。

 is this about a file that's locked because someone locked it, or because your working directory is locked due to an incomplete 

我是使用回购的唯一一个,所以我知道没有人locking它。 它可能是由于一个不完整的操作。

我用1.8.10运行svn状态,没有任何“K”。 有一些文件带有“L”,另一个带有“?”。 列出的所有项目都是目录,而不是文件,但标有“?”的项目除外。

如果我运行了'svn lock –force dirname',它会响应那个特定节点“不是文件”。 当我在标有'?'的文件上运行时,它回应说那个节点'没有find'。

 Then, there is a locked working directory because of an incomplete operation... 

是的,你叫它。 这就是为什么所有的东西都标有“L”的情况下,我收集。

当我运行一个清理(1.8.10)时,它给了我在我的最初的问题中报告的同样的错误(对于这种格式31客户,格式29太老)。

 Remember that you can always delete a working directory and create a new one 

是的。 如果我删除工作副本中的任何目录,并命中更新,它会抱怨它被locking。 我无法清除locking,因为格式不匹配。 理论上我只是重新检查整个回购,然后复制回来,但回购是12GB(21万个文件)。

 Be careful about mixing up Subversion clients 

所以,我不知道我有两个客户,但我只使用TortoiseSVN(1.8.10)。 我今天才发现,当我试图排除故障时,我有两个。

*更新3:解决scheme*使用@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,不要放弃我。

我有一个非常大的SVN回购。 当我尝试使用它(提交,更新等),它说有锁。

这是关于工作副本还是存储库 ? 两个不同的东西。 另外,这是关于一个文件被锁定,因为有人锁定 ,或因为您的工作目录被锁定,由于不完整

您可以对文件进行锁定 ,防止您进行提交。 从命令行,你可以做一个svn status并看到锁定文件旁边的K 然后,您可以使用svn lock --force窃取该锁,并检查您的更改。 (只要存储库中没有挂钩可以防止你窃取锁)。

然后,由于操作不完整,有一个锁定的工作目录。 在这种情况下,当你执行一个svn status时,你会看到一个L 在这种情况下,通常可以在该工作副本的根目录(位于.svn文件夹所在的位置)执行svn cleanup

请记住,您始终可以删除工作目录并创建一个新目录。 注意混合Subversion客户端。 有一次,这似乎并不重要,但在版本1.6,1.7,1.8和1.9中,工作副本的结构发生了变化,可能与运行其他修订的客户端不兼容。


更新2

是的。 如果我删除工作副本中的任何目录,并命中更新,它会抱怨它被锁定。 我无法清除锁定,因为格式不匹配。 理论上我只是重新检查整个回购,然后复制回来,但回购是12GB(21万个文件)。

删除一个目录,然后做一个svn up不会清理锁定问题。 我的意思是删除整个工作目录,重做svn co 。 你不必检查整个回购。 你只需要检查你需要什么。 你需要全部21万个文件吗? 我对此表示怀疑:

 $ svn co http://server/repo # NOOOO! $ svn co http://server/repo/trunk # A bit better, but do you need all # the projects under Trunk? $ svn co http://server/repo/trunk/foo # Now, I'm just checking out foo $ svn co http://server/repo/trunk/bar # Now, I'm just checking out bar 

这检查出两个工作目录:一个为foo ,一个为bar

如果你真的想要结账整个主干,可以使用--depth来稀疏地检出你需要的东西:

 # Checking out trunk, but only getting the project directories $ svn co http://server/repo/trunk --depth=immediates $ svn up --set-depth=infinity foo $ svn up --set-depth=infinity bar 

在这里,我在理论上检查了整个主干,但我只是获得空的主项目目录。 我只从项目foobar获取文件。 但是, foobar 共享一个工作目录。 比方说,我开始对foo进行长时间更新,然后我去吧,并尝试提交。 我会得到一个工作目录被锁定的警告。 我不能在同一工作目录上执行两个单独的Subversion命令,即使它们位于该工作目录的不同部分。

所以,我不知道我有两个客户,但我只使用TortoiseSVN(1.8.10)。 我今天才发现,当我试图排除故障时,我有两个。

如果你安装了Tortoise,你也可以安装Subversion命令行客户端,这是一个可选的安装。 我强烈推荐它! 不要使用从其他地方下载的命令行客户端(如SlikSVN或CollabeNet),这并不是说这些客户端不好,而是应该使用TortoiseSVN版本附带的命令行客户端来保证两者之间的一致性Subversion客户端。

清理VS升级与Svnadmin

弄混这个很容易。 你不应该在你的工作目录上使用svnadmin命令。 svnadmin用于服务器。 你有的问题是严格的客户端。

当Subversion从1.6版本upgrade到1.7版本,现在upgrade到1.9时, upgrade将把你的工作目录升级到新的格式。 一旦完成,你不能回到旧的格式。 您升级到1.8格式,1.7和1.6客户端将不再工作。

清理是为了帮助删除由于不完整的Subversion客户端命令而导致的锁定。