1、使用Linux yum安装工具安装subversion
yum install subversion
2、查看SVN安装位置和使用方法
输入rpm -ql subversion 可以查看安装位置,一般会安装在/usr/bin下面。我们知道svn在bin目录下生成了几个二进制文件。
输入 svn --help可以查看svn的使用方法。
3、创建svn版本库目录
mkdir -p /var/svn
4、创建版本库
svnadmin create /var/svn/svnrepos
执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
conf db format hooks locks README.text
5、进入conf目录(该svn版本库配置文件)
authz文件是权限控制文件
passwd是帐号密码文件
svnserve.conf SVN服务配置文件
6、设置帐号密码
vi passwd
在[users]块中添加用户和密码,格式:帐号=密码,如david=123456
7、设置权限
vi authz
在末尾添加如下代码:
[/]
david=rw
wayne=r
意思是版本库的根目录david对其有读写权限,wayne只有读权限。
这里也可以对用户进行分组划分权限
[groups]
user_group = david
view_group = wayne
[project:/]
@user_group = rw
@view_group = r
表示版本库根目录user_group成员有读写权限,view_group成员只有读权限。
8、修改svnserve.conf文件
vi svnserve.conf
打开下面的几个注释:
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /var/svn/svnrepos # 认证空间名,版本库所在目录
9、启动svn版本库
svnserve -d -r /var/svn
注意:
第8步,修改svnserve.conf 文件时。解开注释时要注意,同时要删除#后面的空格,否则报错:svnserve.conf:12: Option expected
常用SVN命令
启动:svnserve -d -r /var/svn
关闭:killall svnserve
查看:ps -ef|grep svn
然后要设置自启动
vi /etc/rc.local
打开自启动文件
文件内容如下
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
添加下面一行
svnserve -d -r /var/svn/svnrepos
保存退出
svn命令:
lsof -i :3690 查看svn是否启动
ps aux |grep 'svn' 查找所有svn启动的进程
kill -9 2505 杀死2505这个查找到的svn进程
svnserve -d -r /var/svn/svnrepos 启动svn(可以把这个放到/etc/local/rc.local文件中,实现开机自启动)
5.客户端连接
svn co svn://ip/svnrepos
用户名/密码:myname
6.实现SVN与WEB同步,可以CO一个出来,也可以直接配在仓库中
1)设置WEB服务器根目录为/home/www/webroot
2)checkout一份SVN
svn co svn://localhost/svnrepos /home/www/svnrepos
修改权限为WEB用户
chown -R www:www /home/www/webroot/svnrepos
3)建立同步脚本
cd /home/www/svndata/svnrepos
/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件最后添加以下内容
export.UTF-8
SVN=/usr/bin/svn
WEB=/home/www/svnrepos
$SVN update $WEB --username myname --password myname --no-auth-cache --no-auth-cache 是不记住用户缓存(增加了这个之后就能提交后不出现错误,版本错误除外)
chown -R www:www $WEB
增加脚本执行权限
//可不用
chmod +x post-commit
这样,我们上传svn后,生产站点就能立马显示出来了,自动化程度高了很多。
备注:
设置svn开机自启动
编辑文件 /etc/sysconfig/rc.local
添加一行 svnserve -d -r /var/svn/repositories
为svn用户组赋予权限
chown -R root:svn /home/svndata/svnrepos
chmod -R g+rws /home/svndata/svnrepos
/*给svn组赋予读写权限,可以根据需要更改相应权限*/
chmod -R o-rwx /home/svndata/svnrepos/*删除其他无关人员的读、写、执行权限,默认情况下可能其他人有读权限*/
只用配置SVN同步的方法
只记录hooks 下的 post-commit文件内的内容
#!/bin/sh
REPOS="$1"
REV="$2"
export.UTF-8
svn update /home/www/webroot --username testuser --password 123456 --no-auth-cache
-username 是svn里的用户名,--password 是SVN用户的密码
--no-auth-cache 是不记住用户缓存(增加了这个之后就能提交后不出现错误,版本错误除外)
export.UTF-8 设置编码格式
注意:给post-commit增加运行权限
svn钩子程序上传文件中文文件导致报错的处理办法
Warning: 钩子 “post-commit” 失败(退出代码 1) 输出: svn: E000022: Error converting entry in directory '/home/wwwroot/itmall' to UTF-8 svn: E000022: Can't convert string from native encoding to 'UTF-8': svn: E000022: ?\230?\149?\176?\230?\141?\174?\229?\186?\147
在钩子程序中 svn update 之前增加
export LANG=en_US.UTF-8