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

时间:2009-04-03 22:59:32

标签: svn

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 个答案:

答案 0 :(得分: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.

答案 1 :(得分:6)

我刚刚删除了1.7创建的项目文件中的.svn文件夹,并使用1.6重新添加了解决方案。这对我有用,希望它可以帮助别人。