svn 從1.6升級到1.7後遇到的種種問題

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終於正常的時候,感動得想哭。

相關文章
相關標籤/搜索