簡介
subversion(如下簡稱svn)版本管理工具,是cvs的接班人。
svn服務器有2種運行方式:獨立服務器和藉助apache,2種方式各有利弊。
svn存儲版本數據也有2種方式:BDB(一種事務安全型表類型)和FSFS(一種不須要數據庫的存儲系統)。由於BDB方式在服務器中斷時,有可能鎖住數據,因此仍是FSFS方式更安全一點。
一下安裝爲藉助apache的運行方式
1、安裝所需軟件包
一、安裝httpd
[root@localhost ~]# tar xvf httpd-2.2.15.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/httpd-2.2.15/
[root@localhost httpd-2.2.15]#
[root@localhost httpd-2.2.15]# ./configure --prefix=/usr/local/apache-2.2.15 --enable-dav --enable-so --enable-rewrite --enable-modules=most
[root@localhost httpd-2.2.15]# make
[root@localhost httpd-2.2.15]# make install
二、安裝apr、apr-util
[root@localhost ~]# tar xvf apr-1.3.8.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-1.3.8/
[root@localhost apr-1.3.8]# ./configure --prefix=/usr/local/apr-1.3.8
[root@localhost apr-1.3.8]# make
[root@localhost apr-1.3.8]# make install
[root@localhost ~]# tar xvf apr-util-1.3.9.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/apr-util-1.3.9/
[root@localhost apr-util-1.3.9]# ./configure --prefix=/usr/local/apr-util-1.3.9 --with-apr=/usr/local/apr-1.3.8/
[root@localhost apr-util-1.3.9]# make
[root@localhost apr-util-1.3.9]# make install
三、安裝sqlite
[root@localhost ~]# tar xvf sqlite-amalgamation-3.6.13.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/sqlite-3.6.13/
[root@localhost sqlite-3.6.13]# ./configure --prefix=/usr/local/sqlite-3.6.13
[root@localhost sqlite-3.6.13]# make
[root@localhost sqlite-3.6.13]# make install
四、安裝 none
[root@localhost ~]# tar xvf neon-0.29.6.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/neon-0.29.6/
[root@localhost neon-0.29.6]# ./configure --prefix=/usr/local/neon-0.29.6 --enable-shared
[root@localhost neon-0.29.6]# make
[root@localhost neon-0.29.6]# make install
五、安裝libtool、expat (expat expat-devel)
yum -y install expt*
yum -y install libtool*
2、安裝svn
確認全部所需的軟件包所有安裝
[root@localhost local]# ls
apache-2.2.15 apr-1.3.8 apr-util-1.3.9 bin etc games include lib lib64 libexec neon-0.29.6 sbin share sqlite-3.6.13 src
[root@localhost local]#
一、編譯安裝svn
[root@localhost ~]# tar xvf subversion-1.6.6.tar.bz2 -C /usr/local/src/
[root@localhost ~]# tar xvf subversion-deps-1.6.6.tar.bz2 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/subversion-1.6.6/zlib/
[root@localhost zlib]# ./configure --shared
[root@localhost zlib]# make
[root@localhost zlib]# make install
[root@localhost zlib]# cd ..
[root@localhost subversion-1.6.6]# ./configure --prefix=/usr/local/svn-1.6.6 --with-apxs=/usr/local/apache-2.2.15/bin/apxs --with-apr=/usr/local/apr-1.3.8/ --with-apr-util=/usr/local/apr-util-1.3.9/ --with-sqlite=/usr/local/sqlite-3.6.13/ --with-neon=/usr/local/neon-0.29.6/ --with-ssl --with-zlib=/usr/local/src/subversion-1.6.6/zlib/
注:若是最後出現下面WARNING,咱們直接忽略便可。由於不使用BDB存儲。
[root@localhost subversion-1.6.6]# make
[root@localhost subversion-1.6.6]# make install
確認是否安裝成功
[root@localhost ~]# cd /usr/local/apache-2.2.15/conf/
[root@localhost conf]# vim httpd.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
二、建立版本庫
一、建立版本庫
[root@localhost ~]# /usr/local/svn-1.6.6/bin/svnadmin create /svn/www/
[root@localhost ~]# ls /svn/www/
conf db format hooks locks README.txt
二、修改庫配置文件
[root@localhost ~]# cd /svn/www/conf/
[root@localhost conf]# vim svnserve.conf
anon-access = none #使非受權用戶沒法訪問
auth-access = write ##使受權用戶有寫權限
password-db = /svn/www/conf/passwd # 指明密碼文件路徑
authz-db = /svn/www/conf/authz # 訪問控制文件
realm = www Repository # 認證命名空間,subversion會在認證提示裏顯示,而且做爲憑證緩存的關鍵字。
三、添加apache認證用戶
[root@localhost conf]# /usr/local/apache-2.2.15/bin/htpasswd -c /svn/www/conf/passwd test
New password:
Re-type new password:
Adding password for user test
四、修改svn認證文件
[root@localhost ~]# cd /svn/www/conf/
[root@localhost conf]# vim authz
[groups]
groupA=www
[www:/]
@groupA = rw 或者 www = rw(能夠對單個用戶定義權限)
五、配置apache中svn認證
最後面添加
[root@localhost ~]# cd /usr/local/apache-2.2.15/conf/
[root@localhost conf]# vim httpd.conf
<Location /www>
DAV svn
SVNPath /svn/www #庫文件路徑
AuthType Basic #基本認證
AuthName "Welcome To www Repository"
AuthUserFile /svn/www/conf/passwd #apache認證文件
AuthzSVNAccessFile /svn/www/conf/authz #svn認證文件
Require valid-user #告訴apache在authfile中全部的用戶均可以訪問。若是沒有它,則只能第一個用戶能夠訪問新建庫。
</Location>
六、修改權限
root@localhost ~]# chown -R daemon:daemon /svn/www/
能夠修改環境變量方便執行命令
[root@localhost ~]# vim .bash_profile
PATH=$PATH:/usr/local/svn-1.6.6/bin/
[root@localhost ~]# source .bash_profile #使之馬上生效
七、啓動apache 和svn
[root@localhost conf]# /usr/local/apache-2.2.15/bin/apachectl start
[root@localhost conf]# /usr/local/svn-1.6.6/bin/svnserve -d -r /svn/
此指令用於啓動svn服務,-d指明以守護模式運行,svn自動在3690端口監聽,-r選項用來指定svn服務的根目錄,這樣用戶就可使用相對路徑訪問,而不用提供完整路徑。
八、測試
一、在瀏覽器中輸入
http://svn服務器IP/www
輸入用戶名密碼訪問
二、用客戶端
三、svn平常管理命令
一、建立版本庫
[root@localhost ~]# svnadmin create /svn/www/
www 爲建立的版本庫
二、導入數據到版本庫
[root@localhost ~]# ll test/
總用量 0
-rw-r--r--. 1 root root 0 3月 27 01:23 a
-rw-r--r--. 1 root root 0 3月 27 01:23 b
-rw-r--r--. 1 root root 0 3月 27 01:23 c
[root@localhost ~]# svn import /root/test/ file:///svn/www/ -m "import"
增長 /root/test/a
增長 /root/test/b
增長 /root/test/c
提交後的版本爲 1。
三、查看版本庫內容
查看版本庫最新版本
[root@localhost ~]# svnlook youngest /svn/www
5
查看版本庫中的內容
[root@localhost ~]# svn list file:///svn/www/
a
b
c
[root@localhost ~]#
顯示一個版本倉庫中文件和目錄的樹形結構圖
[root@localhost ~]# svnlook tree /svn/www/ --show-ids
/ <0.0.r1/626>
a <0-1.0.r1/51>
b <3-1.0.r1/207>
c <5-1.0.r1/365>
[root@localhost ~]#
顯示被修改的文件
[root@localhost ~]# svnlook diff /svn/www/
已修改: a
===================================================================
--- a 2012-03-26 17:24:56 UTC (rev 1)
+++ a 2012-03-26 17:32:21 UTC (rev 2)
@@ -0,0 +1 @@
+test
\ No newline at end of file
[root@localhost ~]#
四、svn備份
備份
svnadmin -h 顯示svnadmin命令的子命令
svnadmin dump -h 顯示dump命令的子參數命令
一、徹底備份版本庫,並保存爲www_full_bak
[root@localhost ~]# svnadmin dump /svn/www > /root/www_full_bak
二、以增量把版本庫版本5的信心並轉存到www_bak_1
[root@localhost ~]# svnadmin dump /svn/www/ -r 5 --incremental > /root/www_bak_5
對於一些較大的版本庫能夠分解備份
[root@localhost ~]# svnadmin dump /svn/www/ -r 10:20 --incremental > /root/www_bak_10-20
參數介紹:
-r [--revision] ARG : 指定版本 ARG (或 X:Y 範圍)
--incremental : 以增量方式進行轉存
--deltas : 在轉存輸出中使用差別
-q [--quiet] : 在標準錯誤輸出不顯示進度 (僅錯誤)
三、熱拷貝www這個版本庫,能夠直接拿來用,但要確保權限
[root@localhost ~]# svnadmin hotcopy /svn/www/ /root/www_hotcopy
五、SVN還原
[root@localhost ~]# svnadmin load /svn/www/ < /root/www_full_bak
還原徹底備份
[root@localhost ~]# svnadmin dump /svn/www/ -r 5 --incremental > /root/www_bak_1
再還原增量備份
[root@localhost ~]# svnadmin dump /svn/www/ -r 10:20 --incremental > /root/www_bak_1
[root@localhost ~]# svnadmin dump /svn/www/ -r 21:40 --incremental > /root/www_bak_1
六、SVN合併
一、建立版本庫crazy
svnadmin create /svn/crazy
二、備份/svn/www 和 /svn/redhat 版本庫
[root@localhost ~]# svnadmin dump /svn/www > /root/www_full_bak
[root@localhost ~]# svnadmin dump /svn/redhat/ > /root/redhat_full_bak
三、合併版本庫
[root@localhost ~]# svnadmin load /svn/crazy/ --parent-dir test < /root/www_full_bak
[root@localhost ~]# svnadmin load /svn/crazy/ --parent-dir test1 < /root/redhat_full_bak
七、備註
[root@localhost ~]# svn -h
[root@localhost ~]# svnlook -h
[root@localhost ~]# svnadmin -h
[root@localhost ~]# svnadmin dump -h
查看幫助信息
3、Svn結合Apachesql
一、添加同步腳本
數據庫
須要同步的版本庫(www)apache
[root@localhost svn]# ls /svn/vim
www瀏覽器
添加同步腳本
緩存
[root@localhost hooks]# pwd
安全
/svn/www/hooks
[root@localhost hooks]# cat post-commit
#!/bin/bash
export LANG=en_US.UTF-8 字符集
SVN=/usr/local/svn-1.6.6/bin/svn SVN命令
WEB=/usr/local/apache-2.2.15/htdocs/ WEB目錄
$SVN update $WEB --username test --password test 同步更新bash
修改權限
服務器
[root@localhost hooks]# pwd
ide
/svn/www/hooks
[root@localhost hooks]# chown daemon:daemon post-commit
[root@localhost hooks]# chomd 700 post-commit
[root@localhost htdocs]# pwd
/usr/local/apache-2.2.15/htdocs
[root@localhost htdocs]# chown -R daemon.daemon htdocs/
二、報錯解決
post-commit hook failed (exit code 255) with no output.
[root@localhost hooks]# chomd 700 post-commit
[root@localhost hooks]# chown daemon:daemon post-commit
svn: Can't open file '/usr/local/apache-2.2.15docs/.svn/lock': Permission denied
[root@localhost htdocs]# pwd
/usr/local/apache-2.2.15/htdocs
[root@localhost htdocs]# chown -R daemon.daemon htdocs/