1 subversion目录文件说明:
*db目录:就是所有版本控制的数据存放文件
*hooks目录:放置hook脚本文件的目录
*locks目录:用来放置subversion见艰苦锁定数据的目录,用来追踪存取文件库的客户端
*format文件:是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
如果有卸载旧版本:
yum remove subversion
2 安装
yum install subversion
3 检查是否安装成功
svnserve --version
配置:
1 新建一个目录用于存储SVN所有文件
# mkdir /home/svn
2 新建一个版本仓库
# svnadmin create /home/svn/project
# harry = harryssecret
# sally = sallyssecret
pm = pm_pw
4 修改svnserve.conf
[general] anon-access = read auth-access = write password-db = passwd authz-db = authz
5 修改权限认证文件
authz: [groups] [/] username= rw * =
6 启动服务器
# svnserve -d -r /home/svn
注:查看服务及重启服务
ps -ef|grep svnserve # ps -aux|grep svnserve # kill -9 ID号 # svnserve -d -r /home/svn
扩展配置:
1 设置SVN自启动
---------------------
在/etc/rc.d/rc.local文件中增加这么一行
svnserve -d -r /home/svnroot/svndata &
2 检出一份代码
把SVN的代码检出一份
svn co svn://xx.xx.xxx.xxx/repos1 /home/svnroot/checkout/ --username zmk
配置项目自动部署:(部署目录必须先检出代码,在设置自动更新)
为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,打开hooks目录,
可以看到有一个post-commit.tmpl文件,这是一个模板文件,
复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:
chown www:www post-commit
chmod +x post-commit这样就有了访问www目录的权限。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.
我的文件内容为:
#!/bin/sh
#设定环境变量,如果没有设定可能会出现update报错
export LANG=zh_CN.UTF-8 REPOS="$1" REV="$2" SVN_PATH=/usr/bin/svn WEB_PATH=/web/project LOG_PATH=/tmp/svn_update.log #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache echo "nnn##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH echo `whoami`,$REPOS,$REV >> $LOG_PATH $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH chown -R www:www $WEB_PATH
说明:
1、#!/bin/sh 说明是执行shell命令
2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。
如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8
这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8
#执行更新操作
3、svn update –username 你版本库的用户名 –password 用户名的密码 svn://你的IP地址:端口/repos/project /web/project
4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。
安装