svn 从1.6升级到1.7后遇到的种种问题

linux下的svn merge命令不太会用,便下载了smartsvn来做merge。当从smartsvn中import project后执行操作的时候,它提示我必须把我project升级到1.7才能执行操作。我也没多想就点了yes。结果之后悲剧了,我在project中命令行下直接svn update的时候,居然提示我

svn: E155021: The path 'xxx' appears to be part of a Subversion 1.7 or greater working copy.  Please upgrade your Subversion client to use this working copy.

当时看到这个错误很困惑,后来才想明白我在命令行中用的svn也是一个software,需要把这个命令行用的svn升级。ok,参考iteye的svn1.7升级方案,升级成功。

当SVN客户端从1.6升级到1.7的时候,你之前用1.6版的TortoiseSVN检出的那些文件夹,在1.7的TortoiseSVN下面是不能直接使用的。因为1.7版SVN的控制文件格式发生了改变最直接的就是.svn这个隐藏文件夹不再是存在于每个子文件夹中,而是只存在于checkout出来的根目录中。这时,你如果要继续操作1.6版的TortoiseSVN检出的那些文件夹,就必须先对这些文件夹执行svn upgrade working copy操作,这个操作是将这些文件夹转成1.7版TortoiseSVN所需要的格式。

现在命令行svn是1.7的了,我的项目也被smartsvn升级到1.7了。执行svn info是ok的,但当update的时候,oh my god, 仍然报错

svn: E170000: Unrecognized URL scheme for http*

继续百度,搜到这个解决方法。下载neon,移到subversion目录(注意文件夹名字一定要改成neon),make neon,再重新make subversion。

sorry,报错继续。提示缺少 Berkeley DB。继续搜索,从红薯大哥的博客中找到Berkeley DB安装方法(答案在评论部分)。按照文档操作,当测试编译test.c的时候其实也是报错缺少db.h,不过我没理会了。

这样再重新make subversion,正常情况应该会ok了。

为什么升级到1.7后svn update会有问题呢?这是我找到的有道理的一篇文章

Subversion 使用外挂系统来存取档案库. 目前有三个这样的外挂: ra_local 可以存取本地档案库, ra_dav 可以透过 WebDAV 存取档案库, 而 ra_svn 可以透过 svnserve 服务器来进行本地或远端的存取. 当你想要在 Subversion 进行一个作业时, 用户端会试着按 URL schema 动态载入一个外挂. file:// URL 会试着载入 ra_local, 而 http:// URL 会试着载入 ra_dav, 以此类推.

你看到的这个错误, 表示动态连结器/载入器无法找到要载入的外挂. 这个发生的原因, 通常是因为你以共享程式库的方式编译 Subversion, 但是还没有执行 make install 就要执行它. 另一个可能就是你执行了 make install, 但是程式库把它存在动态连结器/载入器不认得的地方. 在 Linux 下, 你可以把那个程式库目录加进 /etc/ld.so.conf, 然后执行 ldconfig, 让连结器/载入器可以找到程式库.

其实这篇博客看起来很顺利,就像迷宫,我直接从出口往入口看,发现并不难。可在从入口踏入迷宫的时候,我遇到了无数问题,走了无数弯路,中途几次想放弃,把一切都回退到1.6。但是问题不要躲开,而要面对。当svn1.7的update终于正常的时候,感动得想哭。

你可能感兴趣的:(svn 从1.6升级到1.7后遇到的种种问题)