加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 无法升级SVN工作副本

发布时间:2020-12-14 01:53:55 所属栏目:Windows 来源:网络整理
导读:我有一个非常大的svn回购.当我尝试使用它(提交,更新等)时,它说有锁. 当我运行’svn cleanup’时,它表示工作副本太旧了,我需要升级它. 当我运行’svn upgrade’时,它运行,但没有说什么. 我还在repo上运行’svnadmin upgrade’,以防万一. 我安装了最新的Tortoi
我有一个非常大的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 FilesSlikSvnbinsvn.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?

工作副本.虽然我也试过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

我是唯一一个使用回购的人,所以我知道没有其他人锁定它.这可能是由于操作不完整.

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

如果我运行’svn lock –force dirname’,它会响应该特定节点“不是文件”.当我在标有“?”的文件上运行它时,它响应该节点“未找到”.

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

是的,你打电话给它.这就是为什么所有的东西都标有’L’,我收集.

当我运行清理(1.8.10)时,它给了我在我的intiial问题中报告的相同错误(格式29对于此格式31客户端来说太旧了).

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

是的.如果我删除工作副本中的任何目录并点击更新,它会抱怨它已被锁定.我无法清除锁定,原因是格式不匹配.理论上我可以重新检查整个仓库,然后复制回来,但回购是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没有放弃我.

解决方法

I have a very very large svn repo. When I try to use it (commit,update,etc.) it says there are locks.

这是关于工作副本还是存储库?两件不同的事情.此外,这是关于一个文件被锁定,因为有人锁定它,或因为您的工作目录由于不完整而被锁定

您可以锁定文件,阻止您进行提交.从命令行,您可以执行svn状态并查看锁定文件旁边的K.然后,您可以使用svn lock –force来窃取该锁定,并检查您的更改. (只要存储库中没有钩子阻止您窃取锁定).

然后,由于操作不完整,存在锁定的工作目录.在这种情况下,当您执行svn状态时,您将看到L.在这种情况下,您通常可以在该工作副本的根目录中执行svn清理(.svn文件夹所在的位置.)

请记住,您始终可以删除工作目录并创建新目录.混淆Subversion客户端要小心.有一段时间,它似乎没那么重要,但在版本1.6,1.7,1.8和1.9中,工作副本的结构已经改变,可能与运行其他修订版的客户端不兼容.

更新2

Yep. If I delete any directory in the working copy and hit update,it complains that it is locked. I can’t clear the lock,’cause of the format mismatch. I can theoretically just re-checkout the entire repo,then copy things back,but the repo is 12GB (210,000 files).

删除目录然后执行svn不会清除锁定问题.我打算删除整个工作目录,并重做一个svn co.您不必签出整个仓库.你只需要看看你需要什么.你需要所有210万个文件吗?我对此表示怀疑:

$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

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

So,I was unaware that I had two clients,but I only only only use TortoiseSVN (1.8.10). I only discovered today that I had two when I was trying to troubleshoot.

如果安装Tortoise,您还可以安装Subversion命令行客户端,这是一个可选的安装.我强烈推荐它!不要使用从其他地方下载的命令行客户端(如SlikSVN或CollabeNet.这并不是说这些客户端是坏的.这是你应该使用你的TortoiseSVN版本附带的命令行客户端,以保证两者之间的某些奇偶校验Subversion客户端.

清理与升级与Svnadmin

让这些困惑很容易.您不应该在工作目录中使用svnadmin命令. svnadmin用于服务器.你有的问题是严格的客户.

随着Subversion从1.6升级到1.7到1.8,现在升级到1.9,升级会将您的工作目录升级为新格式.完成后,您无法恢复旧格式.您升级到1.8格式,1.7和1.6客户端将不再工作.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读