SVN服务器从windows迁移至Linux
一、備份VisualSVN項目
- 現在要使用Linux作為svn服務器,之前是在windows Server 2008上的,用的是VisualSVN,作者除了遷移了svn還有禪道,gitlab等,為此可是查閱了很多資料,為此做一個總結,希望以后遇到類似問題的有資料可查,有興趣的可以看看我的其他隨筆。
- 現在svn中有一個項目fpp,需要將fpp這個項目導出到linux環境下。運行cmd,輸入命令 svnadmin dump E:\Repositories\fpp > e:\svnbak\fpp.dump將項目導出到e:\svnbak目錄下。
- 可見命令會導出每個版本的詳細信息,保證了之前的歷史信息不會丟失。現在我們便得到備份文件fpp.dump.
二、上傳備份文件到Linux
- 利用ftp, ssh,scp等工具將fpp.dump文件傳輸到Linux服務器上,這里利用直接利用openSSH這個軟件上傳。文件的路徑為/root/fpp.dump。
三、Linux下SVN的安裝與配置
- Linux下安裝svn,這里直接利用yum命令進行安裝。
yum install subversion完成subversion的安裝。 - 建立版本庫目錄svndata。
mkdir /svndata
svnserve -d -r /svndata#啟動svn,設置版本庫目錄為/svndata
有時啟動失敗的話,查看端口是否被占用,
kill -9 1524(進程號),殺死進程再運行命令
svnserve -d -r /svndata
不知道是那個進程也可以直接殺死所有進程
killall svnserve#關閉svn
- 建立項目庫
svnadmin create /svndata/fpp#fpp就是你的項目名,這個以后要用到 - 配置用戶訪問權限
cd /svndata/fpp/conf
vi svnserve.conf
釋放如下幾行的注釋 ,之前查資料遇到一些什么都不懂就敢往上發,還有的人說把這幾個注釋了,有的是第一項參數為read的話就不用設置賬號了。
anon-access = none #匿名用戶不可讀寫,人多需要設置權限必須設置為none
auth-access = write #授權用戶可寫
password-db = passwd #以哪個文件作為用戶密碼文件
authz-db = authz #以哪個文件作為權限文件
后面兩個也可以寫絕對路徑,建議寫絕對路徑。
password-db = /svndata/fpp/conf/passwd
authz-db = /svndata/fpp/conf/authz
- 增加訪問用戶,格式為(username = password)
特別注意!!!等號兩邊要加空格,否則無效。沒有加空格,就一直沒用,在linux所有配置文件里都是注意
四、導入備份文件
- 輸入命令:
svnadmin load /svndata/fpp < /root/fpp.dump
五、客戶端進行代碼的檢出
1.windows端安裝TortoiseSVN, 右鍵svn checkout
- 在打開的對話框中,輸入svn庫的地址,確定便可以同步項目,ip地址加項目名稱。
- svn提示檢出成功,在目錄下可以找到檢出的項目。
- 對于以前的項目,重定向到新的svn服務器,右鍵->TortoiseSVN->Relocate,在彈出的對話框中填寫新的地址,TortoiseSVN會提示修改成功,之后,就可以使用新的svn了。
常見問題總結如下:
1、不知道該怎么設置 svn://url 這個路徑
2、三個需要設置的文件,其中authz這個里面的[repos:/]這個到底該怎么設置
3、認證失敗問題出在哪里?
4、svn import 目錄1 "svn://localhost/目錄2" -m "first version" 目錄2到底怎么設置?
5、import 的時候出現“條目從本地編碼轉換到UTF8失敗”
6、服務器端都沒問題了,但是客戶端不能連接主機
下面就根據這幾個問題,一一解答:
1、svn可以分為單個或多個版本庫,假設:
版本庫目錄為/data/svndata/repos1
啟動程序如果是:svnserve -d -r /data/svndata/repos1
這代表你當前svn只為repos1這個版本庫工作,客戶端訪問直接svn://IP/ 就可以了,后面不跟目錄
啟動程序如果是:svnserve -d -r /data/svndata/ 這代表你當前svn可以多版本庫運行,客戶端訪問就需要加上 svn://IP/repos1 這樣才能訪問repos1版本庫
2、第一個問題是對應的
如果是一個版本庫,那應該設置成如下:
[groups]
admin = user1,user2
[/]
@admin=rw
如果是多個版本庫,那就應該設置成這樣:
[groups]
admin = user1,user2
[repos1:/]
@admin = rw
3、認證失敗的問題,就是對上述兩個問題沒有相對應的設置好,要么都安一個版本庫設置,要么都安多個版本庫設置,只要對應設置好,應該就是沒有問題的。
4、目錄2是由svn建立的,不用自己去設置,假設:
svn import /tmp/ceshi "svn://localhost/a/b/c" -m "first version"
這樣的話,當你checkout的時候,你本地的目錄就應該是: /a/b/c
5、網上都說是LANG沒設置好,可是我的不是這個問題,我的是導入的源文件中有些文件自身的文件名亂碼,建議使用sublime而不要用notepad。
6、服務器都設置好了,那要是客戶端還連不上,就是防火墻的問題了,去/etc/sysconfig/iptables 設置一下,打開默認的3690端口就可以了
參考原文地址:
https://www.cnblogs.com/lidabo/p/4633152.html
https://www.cnblogs.com/lxwphp/p/8031811.html
作者:黑客不黑_
鏈接:https://www.jianshu.com/p/3d3915b8c4e3
總結
以上是生活随笔為你收集整理的SVN服务器从windows迁移至Linux的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TortoiseSVN如何切换svn的登
- 下一篇: linux svn服务器启动停止命令