Svn工做原理和服務搭建

 

                                     Svn工做原理和服務搭建
 
簡介
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/

相關文章
相關標籤/搜索