linux下的svn merge命令不太会用,便下载了smartsvn来作merge。当从smartsvn中import project后执行操做的时候,它提示我必须把我project升级到1.7才能执行操做。我也没多想就点了yes。结果以后悲剧了,我在project中命令行下直接svn update的时候,竟然提示我html
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升级方案,升级成功。java
当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所须要的格式。linux
如今命令行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。app
sorry,报错继续。提示缺乏 Berkeley DB。继续搜索,从红薯大哥的博客中找到Berkeley DB安装方法(答案在评论部分)。按照文档操做,当测试编译test.c的时候其实也是报错缺乏db.h,不过我没理会了。svn
这样再从新make subversion,正常状况应该会ok了。测试
为何升级到1.7后svn update会有问题呢?这是我找到的有道理的一篇文章this
Subversion 使用外挂系统来存取档案库. 目前有三个这样的外挂: ra_local 能够存取本地档案库, ra_dav 能够透过 WebDAV 存取档案库, 而 ra_svn 能够透过 svnserve 服务器来进行本地或远端的存取. 当你想要在 Subversion 进行一个做业时, 用户端会试着按 URL schema 动态载入一个外挂. file:// URL 会试着载入 ra_local, 而 http:// URL 会试着载入 ra_dav, 以此类推.url
你看到的这个错误, 表示动态连结器/载入器没法找到要载入的外挂. 这个发生的缘由, 一般是由于你以共享程式库的方式编译 Subversion, 可是尚未执行 make install 就要执行它. 另外一个可能就是你执行了 make install, 可是程式库把它存在动态连结器/载入器不认得的地方. 在 Linux 下, 你能够把那个程式库目录加进 /etc/ld.so.conf, 而后执行 ldconfig, 让连结器/载入器能够找到程式库..net
其实这篇博客看起来很顺利,就像迷宫,我直接从出口往入口看,发现并不难。可在从入口踏入迷宫的时候,我遇到了无数问题,走了无数弯路,中途几回想放弃,把一切都回退到1.6。可是问题不要躲开,而要面对。当svn1.7的update终于正常的时候,感动得想哭。