这个客户端版本过旧,无法与工作副本一起使用。

22

我在谷歌上搜索了很多地方都得到了同样的答案,但对于我来说却是错误的答案。我最初在我的服务器上安装了适用于 Windows 的 Subversion 1.5.6,并为一个项目创建了一个仓库。然后我使用笔记本电脑上的 Tortoise 客户端版本 1.6.X 更新该项目。一切都很顺利,直到我尝试使用 post-commit 钩子脚本(我要在提交时更新 wwwroot 文件夹以反映网页变化)。我收到了“该客户端过旧,无法与工作副本 'XXX' 协同工作”的消息。

因此,我在笔记本电脑上卸载了 SVN 客户端,并从服务器中删除了仓库。然后我从头开始在服务器上创建了一个新的仓库,并安装了 TortoiseSVN 版本 1.5.6,认为如果客户端版本与服务器上的 Subversion 版本相同,则它们应该可以正常协作。在我重新下载仓库并重新安装钩子脚本后,我收到了同样的消息...

必须通过不断地摧毁我的仓库并重新安装客户端来进行试错,这非常费时费力且破坏性很大。我看不出任何理由(也找不到任何在线答案)可以解释为什么仓库会有争议,如果 TortoiseSVN 和我的服务器 Subversion 版本都是 1.5.6。

是否有人能够解释一下我收到这条消息的原因?甚至有人能告诉我需要使用哪个版本的 TortoiseSVN 才能让我的服务器 SVN 1.5.6 不抱怨吗?我的钩子脚本在我的服务器命令行上工作,所以我知道它不是问题所在。提前感谢您的帮助。


2
你是从TortoiseSVN还是其他地方收到了错误信息?钩子脚本在做什么?你是通过http访问svn服务器的吗? - leeeroy
1
如果你与客户端有问题,为什么要重新创建存储库而不是重新创建一个工作副本?或者你也更新了服务器吗? - Eugene
我在TortoiseSVN和命令行客户端中都遇到了错误。这是我的钩子脚本的样子:"[PATH TO svn.exe]" update "[PATH TO SERVER WORKING COPY]" --quiet --non-interactive --username [USERNAME] --password [PASSWORD] --config-dir "[PATH TO REPOSITORY CONFIGURATION FILE]"我不是通过http访问。 - Adamantine
6个回答

16

事实证明,我的服务器版本SVN是1.5.6,但我在服务器上安装的TortoiseSVN客户端版本是1.6.3。当我检出我的wwwroot工作副本(或使用TortoiseSVN给我的右键单击选项更新它),并更新该工作副本的版本时,SVN服务器无法更新,因为它是较低版本。

我从Filehippo下载了TortoiseSVN 1.5.6,在服务器上重新检出了工作副本,一切都很顺利!


1
这不正是我要表达的吗?(请看我的上一条评论) - paracycle
重新检出工作副本 - 工作了,但感觉有点难过 :( - Ahmed Nabil

3
您声称问题的原因不是提交后钩子脚本,但我的直觉是这正是您问题的根源。当您的提交后脚本运行时,它如何从您的Subversion服务器获取文件以便将它们复制到您的Web服务器上?难道它不会“检出”它们吗?另外,您说在安装提交后钩子脚本之前一切都运行良好。
我曾经在混合模式客户端/服务器SVN安装情况下工作过,包括TortoiseSVN作为客户端,只要在同一仓库中工作的客户端版本相同,我就从未遇到任何不兼容性问题。
请问您能否发布您的提交后钩子的内容,以便我们可以进一步阐述?

顺便提一下,这是我找到这个解决方案的链接。它似乎对他有效,但对我无效:http://www.codersrevolution.com/index.cfm/2008/9/15/Creating-a-postcommit-hook-for-Subversion - Adamantine
我不知道如何直接检查该文件的版本,但是在同一目录下的自述文件中写着:“这是适用于Win32的Subversion版本1.5.6”,这是可以预料的,因为这就是我安装的版本。 - Adamantine
1
你是否曾经用其他 SVN 版本更新过 [PATH TO SERVER WORKING COPY] 路径? - paracycle
这并没有提供问题的答案。如果您想对作者进行批评或请求澄清,请在他们的帖子下留言。 - Bob
@Bob:鉴于问题中提到“是否有人能够提供一些关于为什么我会收到这个消息的见解?”,我认为这个答案帮助缩小了问题范围,指出了服务器上安装的 SVN 版本可能是问题所在。 - paracycle
显示剩余2条评论

1
在我的情况下,我将 Eclipse 代码从一个地方移到另一个地方,然后问题就开始了。为了解决这个问题,我从 SVN 仓库检出项目。然后,在旧的项目中,我清理了所有 SVN 文件(只需搜索 .svn 并删除),然后将内容复制到刚刚检出的项目中,我的更改变得可见,我的项目也是最新的。这种方法可以应用于其他烦人的错误。希望这能帮助别人。

0
我遇到了同样的错误。但是原因是我用svn 1.5客户端检出了项目,而我的eclipse中的subclipse插件版本是1.4。所以将我的subclipse插件更新到1.6版本就解决了问题。所以问题是subclipse 1.4无法与使用svn 1.5客户端检出的项目一起工作。
希望这对某人有所帮助。

0

没有必要降级存储库,因为我在切换版本时完全删除了它并重新创建了它。 - Adamantine

0

检查一下你的后提交挂钩脚本运行的svn命令。确保此命令的版本与最后一个访问你的代码库的SVN客户端的版本匹配。

默认情况下,当使用新版本的subversion客户端时,它会将代码库升级到该版本。这意味着旧版本的客户端突然就无法再工作了。


它将升级工作副本,而不是存储库(除非您也更新服务器本身)。通常,如果您想要旧版本的客户端,只需进行干净的签出即可。 - Eugene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接