简介
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/