一个公司的项目合作人员越多,对版本控制就非常的重要,在更改中难免会起冲突,而且有覆盖错误的情况,所以,单间svn控制版本,可以方便大家进行按照的还原,
为了管理的流程化、规范话,搭建svn版本控制器。
说明:项目软件:/usr/local/nginx/html/rabbit 创库版本地址:/usr/local/nginx/svndatehouse/rabbit
--------------------------------安装开始----------------------------
基本步骤:
1:安装subversion
2:创建版本库
3:配置用户和权限
4:钩子配置
5:svn的常用命令
一:安装subversion
使用yum安装subversion
[root@localhost ~]# yum -y install subversion
二:创建版本库
[root@localhost ~] cd /usr/local/nginx/
[root@localhost nginx] mkdir -p svndatehouse/rabbit
[root@localhost nginx] svnadmin create svndatehouse/rabbit
三:版本库的配置
进入svndatehouse/cms版本库目录中的conf目录,可以看到以下三个文件
[root@localhost nginx] cd svndatehouse/rabbit/conf
[root@localhost conf] ls
authz passwd svnserve.conf
说明:svnserve.conf #这是一个版本库的配置文件
authz #这是一个记录组、权限、身份验证的文件
passwd #这是一个记录用户账户密码的文件
1:配置svnserve.conf文件,把下面的几项签名去掉,顶头写,前面不能有空格
[root@localhost conf] vi svnserve.conf
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
2:配置passwd文件
[root@localhost conf] vi passwd
[user]
# harry = harryssecret
# sally = sallyssecret
rabbit=lmt818 #配置rabbit版本库的 用户名=密码
3:配置authz文件
[root@localhost conf] vi authz
说明:在最后面一行加上以下的字段;顶头写,前面不能有空格
[/] #配置访问相对根目录
system=rw
总结:svn版本库配置完成,之后相关钩子的配置以及启动、自动开机设置
启动svn:
[root@localhost ~] svnserve -d -r /usr/local/nginx/svndatehouse/
停止svn:
[root@localhost ~] killall svnserve 或者 kill -9 进程号
设置开机启动:
[root@localhost ~] vi /etc/rc.d/rc.local
/usr/bin/svnserve -d -r /usr/local/nginx/svndatehouse/
我们通过客户端上传的文件提交到版本库中,我从本地提交的时候就能直接把文件提交到项目中去,需要用到钩子文件
四:钩子自动更新
首先对代码目录进行checkout处理
[root@localhost ~] cd /usr/local/nginx/html/
[root@localhost html] svn co svn://192.168.3.110/rabbit/
Authentication realm: 21d46c22-96a8-465b-9d0b-58a1e04abdfd
Password for 'root':
Authentication realm: 21d46c22-96a8-465b-9d0b-58a1e04abdfd
Username: rabbit
Password for 'rabbit': lmt818
Checked out revision 0.
通过密码的验证,配置钩子文件
[root@localhost ~] cd /usr/local/nginx/svndatehouse/rabbit/hooks/
[root@localhost hooks]cp post-commit.tml post-commit
[root@localhost hooks] vi post-commit
#在文件中填入以下字段
#!/bin/sh
export LANG=zh_CN.utf-8
REPOS="$1" REV="$2"SVN=/usr/bin/svn
WEB=/usr/local/nginx/html/rabbit/
LOG=/data/home/auto_svn.log # 存放日志,请自行新建文件夹目录
$SVN update $WEB --username rabbit --password lmt818 --non-interactive #$SVN update $WEB --username 用户名 --password 密码 --non-interactive
#....................................
if[$?==0]
then
echo "$REPOS" "$REV" >> $LOG
把目录文件和版本库惊醒关联,使项目目录的文件在版本库中留下链接
[root@localhost hooks] svn import -m "rabbit" /usr/local/nginx/html/rabbit/ file:///usr/local/nginx/svndatehouse/rabbit
[root@localhost hooks] cd /usr/local/nginx/
[root@localhost nginx] svn list file:///usr/local/nginx/svndatehouse/rabbit #列出版本库文件
说明:1:客户端链接地址: svn://192.168.3.110/rabbit
2:链接客户端以后,必须将项目目录下的所有文件,在进行关联操作,这样提交的时候,才能将所有的文件及时的更新至相应项目中 ,关联之后,如果文件无法更新请删除相应目录下的文件,在进行commit操作
五:svn常用命令
1:备份
[root@localhost htdocs]# svnadmin dump /www/svndata/systeacher /mnt/systeacher.2012.06.02
2:关闭服务器
killall svnserve 或者 kill -9 id
3:查看服务 端口号为:3690
ps aux | grep svnserve 或者 ps -ef|grep svn
4:查看版本库ID
svnlook uuid /www/svndatehosuse/system/
5:提示版本库ID与期望不匹配 可以修改
svnadmin setuuid www/svndatehosuse/system 要修改的ID
6:查看端口号
netstat -tunl 或 netstat -antopl | grep svn
7:获取仓库地址
svn checkout file:///www/svndata/systeacher/ /opt/lampp/htdocs
8:添加文件至svn服务器
svn add 1.php
9:查看服务器状态
svn status
10:提交数据
svn commit -m "this is test"
11:更新项目
svn update
12:返回指定的版本
svn update -r 2
13:显示所有文件
svn list
14:删除文件
svn delete 1.php
svn update
svn checkout svn://192.168.3.29/system system/