如何将SVN工作副本的版本降级?

36

SVN目录方便地在计算机之间移动,但这可能导致工作副本和安装的svn客户端之间的版本不匹配,从而导致错误

svn: This client is too old to work with working copy '.';  
  please get a newer Subversion client
在理想的世界里,你可以安装更新版本的SVN客户端,但当这不可能或不方便时,能够将工作副本降级到已安装客户端的版本会很好,特别是当你知道较新版本的任何功能都未被使用时。如果有问题的工作副本没有任何更改,而且不太大以致于不方便,那么只使用旧客户端检出一个新的工作副本就行了。想象一下这种情况:Joe发送给你一个具有许多嵌套目录(及其相关版本控制.svn文件夹)的大型工作副本。你处理它后,当你尝试提交时,svn告诉你你的客户端版本太旧。没必要将其发送回Joe。也不需要检出新的工作副本,并在任何情况下合并更改都不方便。有什么方法可以做到这一点吗?
2个回答

36

简短回答:这不是一件轻松的事情。

幸运的是,开发人员预见了这个问题,并在常见问题解答中处理了它: http://subversion.apache.org/faq.html#working-copy-format-change
其要点是下载并使用他们的脚本: http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/change-svn-wc-format.py

请注意,该脚本只需要客户端的主版本号,因此如果您的客户端版本为1.4.4,则命令应为:

python change-svn-wc-format.py <WC_PATH> 1.4 [...other options...]


更新:

上述脚本仅适用于将版本降至1.6及以下。从1.7+降级似乎不可能。来自源码的说明:

# Downgrading from format 11 (1.7) to format 10 (1.6) is not possible,
# because 11 does not use has-props and cachable-props (but 10 does).
# Naively downgrading in that situation causes properties to disappear
# from the wc.
#
# Downgrading from the 1.7 SQLite-based format to format 10 is not
# implemented.

所以我猜这很琐碎......感谢您的帖子,它证明是有用的。 - Philippe Ombredanne
2
它可以将1.6.x的工作副本降级为Subversion 1.4.x和1.5.x可用的格式,但无法将1.7.x的工作副本降级。 - Nathan Moinvaziri
如何递归地对所有子文件夹执行此操作 - Amit
1
有没有适用于1.7.x及以上版本的解决方案? - subbu

6

我只是删除了由1.7创建的项目文件中的 .svn 文件夹,然后使用1.6重新添加解决方案。这对我有用,希望能帮助其他人。


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