SVN安裝配置技術文檔
適合搭建subversion的人員查看。主要描述subversion定義,服務端的安裝,部署,配置和使用說明。
一、文檔控制
文檔版本
文檔名說明
文檔主題
描述SVN定義,安裝,部署,配置和使用說明。
外部條件
操作系統windows2003
客戶端=Tortoise SVN 1.7.11
服務端=Visual SVN Server 1.7
操作系統CentOS 5.10
客戶端=Tortoise SVN 1.7.11
服務端=subversion 1.6.6
二、基本信息
2.1、SVN定義
2.1.1、SVN概念
svn(subversion)是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件都使用svn作爲代碼版本管理軟件。
svn服務器有2種運行方式:獨立服務器和藉助apache。2種方式各有利弊。
存儲數據:svn存儲版本數據也有2種方式:BDB和FSFS。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點。
2.1.1、SVN版本
達芙妮安裝Subversion版本爲 1.6.6v版本
操作系統 CentOS 5.10
2.1.2、SVN結構
三、Subversion安裝
2.1、Subvesion目錄
安裝目錄:/usr/local/svn/bin
版本庫目錄:/home/svndata/repos
2.2、windwos下SVN安裝
2.2.1、Visual SVN Server .1.7 安裝
1、選擇安裝路徑和數據庫路徑
2、SVN服務器名稱和端口名稱
3、身份證驗證方式(SVN 或windows)
安裝好以後再,Services.msc 註冊一個服務
再開始程序中出現 VisualSvn Server Manager
界面顯示
2.2.2、Tortoise SVN安裝
1、選擇安裝路徑,其他的默認安裝
2.3、CentOS5.10下SVN安裝
安裝環境
操作系統:CentOS 5.10
Subversion: subversion-1.6.6
2.3.1、下載源碼包
下載路徑:/usr/local/src
[root@server ~]# cd /usr/local/src |
2.3.2、編譯SVN
編譯路徑:/usr/local/src/subversion-1.6.6
首先檢測系統有沒有安裝SSL:
[root@server subversion-1.6.6]# find / -name opensslv.h |
找不到,就執行如下命令進行安裝:
[root@server subversion-1.6.6]# yum install openssl |
安裝之後用find / -name opensslv.h命令找到opensslv.h所在的目錄,即下列--with-openssl=後面的路徑,編譯:
[root@server subversion-1.6.6]# find / -name opensslv.h --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
注:以svnserve方式運行,不加apache編譯參數。以fsfs格式存儲版本庫,不編譯berkeley-db。
此時編譯報如下錯誤:
configure: WARNING: unrecognized options: --with-openssl |
說明沒有安裝gcc相關庫,使用如下命令安裝gcc後再編譯:
[root@server subversion-1.6.6]# yum -y install gcc --prefix=/usr/local/svn --with-openssl=/usr/include/openssl --without-berkeley-db |
操作系統 apache 版本和subversion 需要apache版本不一致,我們安裝svnseve獨立服務器,無需apache
[[email protected]]# ./configure --prefix=/usr/local/svn
--with-openssl=/usr/include/openssl --without-berkeley-db --with-apxs=no
最後出現下面WARNING,直接忽略即可,因爲不使用BDB存儲。
configure: WARNING: we have configured without BDB filesystem support |
2.3.3、安裝SVN
安裝目錄:
爲避免出現以下錯誤
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory |
先執行以下操作:
1)、編輯/etc/ld.so.conf文件,添加下面一行:
/usr/local/lib |
2)、保存後運行ldconfig:
/sbin/ldconfig |
注:ld.so.conf和ldconfig用於維護系統動態鏈接庫。
安裝
[root@server subversion-1.6.6]# make && make install |
安裝完成,執行以下命令測試:
[root@server subversion-1.6.6]# /usr/local/svn/bin/svnserve --version 版權所有 (C) 2000-2009 CollabNet。 下列版本庫後端(FS) 模塊可用: * fs_fs : 模塊與文本文件(FSFS)版本庫一起工作。 |
爲了方便下操作,下面將SVN的BIN添加到PATH,編輯/etc/profile,添加:
PATH=/usr/local/svn/bin:$PATH |
保存後,使其立即生效:
source /etc/profile |
2.3.4、配置SVN
建立版本庫目錄,可建多個:
[root@server ~]# mkdir -p /home/svndata/repos #建立版本庫 |
編輯/home/svndata/repos/conf/svnserve.conf,內容修改爲:
[general] |
注意:對用戶配置文件的修改立即生效,不必重啓svn。
在/usr/local/svn/下面新建conf目錄,並在/usr/local/svn/conf內新建passwd.conf和authz.conf文件:
mkdir conf |
添加用戶及密碼:
[root@server ~]# useradd wll |
編輯/usr/local/svn/conf/passwd.conf,添加如下代碼並保存:
[users] |
配置svn用戶訪問權限,編輯usr/local/svn/conf/authz.conf,添加如下代碼並保存:
[groups] 注意: |
建立啓動svn的用戶:
[root@server ~]# useradd svn |
允許用戶svn訪問版本庫:
[root@server ~]# chown -R svn:svn /home/svndata |
啓動svn:
[root@server ~]# su - svn -c "svnserve -d --listen-port 9999 -r /home/svndata" 其中: |
2.3.5、設置開機啓動
編輯/etc/rc.d/rc.local文件,加入如下啓動命令:
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata |
如果想停止svn,則使用如下命令:
killall svnserve |
如果想將svn作爲服務,在/etc/rc.d/init.d/目錄下新建名爲svn的文件並設置權限爲755,並添加如下代碼:
#!/bin/bash |
2.3.6、TortoiseSVN連接SVN
安裝TortoiseSVN,重啓系統。啓動TortoiseSVN並在地址欄中輸入
svn://192.168.188.23:9999/repos 根據提示輸入用戶名與密碼後就可以 |
四、SVN客戶端使用
4.1、Tortoise SVN
4.1.0、導入源代碼到SVN數據庫
選擇正確的Url,就可以導入到SVN數據庫中。
其他的操作,請參考4.1、SVN客戶端使用
4.1.1、取最新代碼從SVN庫
本地新建文件夾,右擊點 SVN check out, 選擇SVNserver Url和本地目錄。
4.1.2、新增代碼和目錄到SVN庫
1)TortoiseSVN ——> Add 標記要上傳的代碼
2)Commit 提交代碼到SVN庫
4.1.3、更新代碼和目錄到SVN庫
1)update 標記要更新的代碼
2)commit 標記代碼更新到SVN庫
4.1.4、刪除代碼和目錄到SVN庫
1)TortoiseSVN ——> Delete 標記要刪除的代碼
2)commit 標記代碼從SVN庫中刪除
4.1.5、複製代碼和目錄( branches /tags/release)
從Trunk 複製代碼和目錄到新的branches / tags / release
Trunk: 代碼主幹
Branches: 代碼分支
Tags: 標記代碼完成一個關鍵階段,工作完成一個里程碑
Release: 要發行的版本
以branches爲例的步驟:
1)、新建branches分支:從本地Trunk Tortoise SVN——>branches /tags
2)、將分支更新到本地:在本地目錄Commit
3)、本地分支代碼更新到 服務Trunk上:
3.1)update/ commit; 3.2)TortoiseSVN ——> Merge
提示:本地和SVN服務器都存在trunk 和branch目錄。
Tags/release:基本和branches操作一樣。
五、SVN服務端管理
5.1、Window-Visual SVN Server
5.1.1、代碼庫Repository
5.1.2、用戶 User
Create User 和Delete 和SetPassword…
5.1.3、組 Group
5.1.4、權限控制
如果用戶添加好了以後可控制每一個文件夾或文件的權限。
添加用戶或組 = add
權限設置 = Permissions
5.2、Linux- Svnserve
5.2.1、版本庫(Repository)
1、創建版本庫目錄
mkdir -p /home/svndata/repos
2、創建版本庫
/usr/local/svn/bin/svnadmin create/home/svndata/repos
Repos目錄下,自動生成
conf:配置目錄下的配置文件如下
svnserve.conf:指定了版本庫訪問用戶和訪問權限,設置了passwd和authz的目錄。
passwd:用於配置repos版本庫的訪問用戶,配置了用戶和密碼
authz :用於配置repos版本庫的用戶的訪問目錄的權限
3、利用客戶端的來管理項目目錄
在客戶端新建下面目錄,在daphne_repos(daphne_code)目錄下,點commit上傳的到服務的版本庫
上傳後,就可以在配置文件authz下設置不能目錄的訪問權限。(5.2.3)
4、刪除已有的目錄
刪除本地目錄,通過TortoiseSvn進行commit 選擇刪除,進行刪除。
5.2.2、用戶(User)
路徑:home/svndata/repos/conf/passwd
編輯 passwd文件,來新增,修改,刪除用戶
整理用戶列表導入到passwd文件中
5.2.3、新增組,設置權限(Authz)
路徑:home/svndata/repos/conf/authz
編輯文件authz,新增,修改,刪除組,設置目錄訪問權限
1,組設置
設置組,相同的組下用戶給予同樣的目錄訪問權限
2,目錄讀寫權限
5.3、版本庫管理
5.3.1、備份
5.3.2、還原
5.3.3、遷移
從Window遷移到linux上
將版本庫導出成 dump 文件。
svnadmin dump myrepos > myrepos.dump
創建新版本庫,將dump文件導入到版本庫
$ svnadmin create /home/svn/repos/myrepos
$ svnadmin load /home/svn/repos/myrepos< myrepos.dump
Daphne_repos 遷移
Cd /usr/local/svn/bin/
svnadmin dump /home/svndata/repos>repos.dump
生成:repos.dump文件
遷入:
svnadmin load /home/svndata/repos_test/test< /usr/local/svn/bin/repos.dump
若提交 revision 18 表明成功
5.3.4、修復
5.3.5、壓縮
六、Daphne SVN
6.1、SVN服務
1、IP地址:192.168.0.61 端口:8443
https://192.168.0.61:8443/svn/
服務器:
192.168.188.23
Root賬號密碼: 略
svn://192.168.188.23:9999/repos
6.1.1、啓動服務
1、關閉服務
ps aux|grep svn
查找到進程
killall svnserve
2、啓動服務
/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /home/svndata
Service svn start
3、重啓服務
Service svn restart
4、停止服務
Service svn stop
提示:要使用 service 需要先配置 svn的服務,參考 2.3.5、設置開機啓動
七、Subversion 統計分析
7.1、統計用戶KPI
八、Subversion異常
8.1、服務端異常
問題1:
客戶端調用時,顯示錯誤信息:svnserve.conf:12:Option expected
表明:svnserve.conf 文件配置異常
[general]
### These options control access to the repository forunauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". Thesample settings below are the defaults.
anon-access = read
auth-access = write
像上面的配置文件中,anon-access是頂行的,沒問題,而auth-access就存在前置空格,會導致這個錯誤。
要避免出現這個錯誤,
問題2:
分析: 出現這個錯誤前,還出現下圖,說明 svnserve.conf 中passwd-db 沒有指定對。
原因:svnserve.conf 配置文件中 password-db 指定文件有問題
原來爲 password-db = passwd.conf
現在改爲如下:
思路:
1、 首先檢查配置文件中svnserve.conf 是否需要用戶驗證由password-db 來指定
檢查的用戶
Password-db 文件
用戶前面不能爲空
九、參考資料
9.1、SVN安裝和配置
參考:CentOS 5.10 svn安裝,配置參考文檔
http://zhumeng8337797.blog.163.com/blog/static/10076891420121189161805/?suggestedreading&wumii
http://zhumeng8337797.blog.163.com/blog/static/1007689142012122937128/?suggestedreading&wumii
linux+apache2+subversio1.4
http://blog.csdn.net/kryptonum/article/details/1523643