ubuntu server下搭建svn服務以及遷移的方法,感興趣的朋友可以參考下。
搭建SVN服務
采用apache+svn,http訪問方式。
先確定安裝了apache,沒有安裝則用以下命令:
復制代碼 代碼如下:
sudo apt-get install apache2
然后安裝subversion及svn-apache連接庫:
復制代碼 代碼如下:
sudo apt-get install subversion
sudo apt-get install libapache2-svn
增加svn用戶組,用于管理svn,并加入到www-data的apache組:
復制代碼 代碼如下:
sudo addgroup subversion
sudo usermod -G subversion -a www-data
然后可以創(chuàng)建svn項目倉庫了:
復制代碼 代碼如下:
# 一般可以將項目倉庫建立到/home/svn目錄
# 假設項目名為myproject,先建立空目錄
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject
#創(chuàng)建為svn項目,使用以下命令
$ sudo svnadmin create /home/svn/myproject
# 然后才賦予組成員對所有新加入文件倉庫的文件擁有相應的權限:
# 如果命令順序搞錯,可能會報錯,請參照官方wiki
$ sudo chmod -R g+rws myproject
最后是配置apache,用http協(xié)議訪問svn服務:
復制代碼 代碼如下:
# 在安裝了libapache2-svn時會自動生成該文件
$ sudo vi /etc/apache2/mods-available/dav_svn.conf
編輯dav_svn.conf配置文件,內有注釋,可以去掉前面的#使語句生效,最后內容大概如下即可:
復制代碼 代碼如下:
<Location /svn> #/svn表示http://hostname/svn/myproject
DAV svn
SVNParentPath /home/svn #配置倉庫父目錄
AuthType Basic
AuthName "ToFishes Project Svn"
AuthUserFile /etc/subversion/passwd #svn用戶文件
AuthzSVNAccessFile /etc/subversion/authz #授權訪問文件
Require valid-user
</Location>
svn用戶文件/etc/subversion/passwd 和 授權訪問文件/etc/subversion/authz是不存在的,需要手動創(chuàng)建。
svn用戶文件可以通過命令創(chuàng)建:
復制代碼 代碼如下:
#首次創(chuàng)建需要加-c選項,同時可以增加一個svn用戶
#執(zhí)行該命令會提示為新用戶user_name設置密碼
sudo htpasswd -c /etc/subversion/passwd user_name
#以后添加新用戶,需要去掉-c選項,否則以前的用戶就被覆滅了
sudo htpasswd /etc/subversion/passwd new_name
用戶是可以添加了,同時需要管理授權,用于多個svn項目,劃分不同的用戶組:
用vi /etc/subversion/authz編輯授權文件,無文件則編輯并保存后會自動創(chuàng)建,無需擔心。
授權文件內容格式如下:
復制代碼 代碼如下:
#用戶組指令
[groups]
#格式為 組名 = 用戶名1,用戶名2
group1 = user1, user2
group2 = user1, user3
#other groups...
#格式為 svn項目的倉庫名:對應目錄
[svn_repository_name:/]
#設置組的權限,r=read, w=write
@group1 = rw
[svn_repository_name2:/web/css]
@group2 = rw
改完最后重啟apache : sudo /etc/init.d/apache2 restart。這樣工作就全部完成了。
其中訪問地址是什么呢,只要當前服務器已經(jīng)綁定了一個域名,并且在apache中啟用了此域名的虛擬主機。
比如能正常訪問 http://www.jbxue.com/, 那么svn項目的訪問地址就是 http://www.jbxue.com/svn/項目名。
遷移SVN倉庫
最近服務器硬盤壞道導致頻繁自動關機,所以需要遷移SVN到新的服務器去。
用以上同樣的方法在新服務搭建好SVN,接著導出原svn倉庫資料,再導入到新svn倉庫即可。
1. 在老服務器進行導出操作:
$ svnadmin dump 原先的repos的目錄路徑(/repository/directory) > dumpfile.svndump
2. 在新服務器將dumpfile.svndump導入到新的repository 目錄中。
$ svnadmin load 新建的repos的目錄路徑(/repository/directory) < dumpfile.svndump
如果項目倉庫比較多,附上一個批處理導出命令,導入的改改就行了:
復制代碼 代碼如下:
#!/bin/bash
cd /home/svn
filelist=`ls` #符號·不是單引號,而是位于鍵盤感嘆號左側
for fname in $filelist
do
svnadmin dump $fname > /home/svndump/${fname}.svndump
#echo $fname
#最好是root用戶執(zhí)行,否則要sudo了
done
那么本地項目svn的檢出及更新地址就需要變更了, 使用TortoiseSVN工具的右鍵找到Relocate菜單就可以了,而使用命令的話如下:
復制代碼 代碼如下:
#在項目目錄查看下倉庫地址
$ svn info
#回顯中的URL項就是舊版地址oldpath
#然后切換到新版地址newpath即可
$ svn switch --relocate http://oldpath http://newpath
#查看信息確認下
$ svn info
參考內容:
http://wiki.ubuntu.org.cn/SubVersion
https://help.ubuntu.com/community/Subversion
http://ihacklog.com/server/ubuntu-server/ubuntu-svn-setup.html