cd /
yum install subversion
cd /website #创建svn目录
mkdir svn
svnadmin create /website/svn/projectA //创建一个svn版本仓库(projectA可以为svn项目名字)
cd /website/svn/projectA/conf //进入配置文件目录
修改配置svnserve.conf,authz,passwd这三个文件(修改后无需重启subversion)
vi svnserve.conf
//把下面项前面的#号和空格去掉并修改(各项前面不能有空格),变成
anon-access = none #使非授权用户无法访问
auth-access = write #使授权用户有写权限
password-db = passwd
realm = projectA # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字,这里设置成和项目名称相同就可以了
保存退出
vi authz
在[groups]下添加
[groups]
projectA = u1,u2 //创建一个projectA的组,并制定两个用户u1和u2
[/] //制定根目录下的权限
@projectA = rw //projectA组用户权限为读写
* = r //其他用户只有读权限
保存退出
vi passwd
在[users]下添加
[users]
u1 = p1 //用户名u1的密码为p1
u2 = 456//用户名u1的密码为456
保存退出
设置自启动
vi /etc/rc.local
在touch /var/lock/subsys/local下面
添加下面一行
svnserve -d -r /website/svn
保存退出
svn启动
svnserve -d -r /website/svn
关闭svn服务
ps -ef|grep svnserve
看到类似
root 4967 1 0 Aug23 ? 00:00:00 svnserve -d -r repository/
其中4967为进程号
使用Kill命令杀死进程 kill -s 9 进程号,即 kill -s 9 4967
配置post-commit,实现自动同步svn版本库文件到web目录
cd /website/svn/projectA/hooks
cp post-commit.tmpl post-commit
赋予post-commit可执行的权限
chmod 777 post-commit
vi post-commit
REPOS="$1"
REV="$2"
export LANG=zh_CN.UTF-8
SVN_PATH=/usr/bin/svn
WEB_PATH=/website/www/projectA
LOG_PATH=/tmp/svn_update.log
$SVN_PATH update $WEB_PATH --username u1 --password p1 --non-interactive
说明:export LANG=zh_CN.UTF-8防止中文乱码,SVN_PATH为svn执行程序所在的目录,WEB_PATH为web项目目录,u1为svn用户名,p1为密码
服务器checkout到本地
默认checkout到当前目录的,所以执行前先切换到你要到的目录, cd /website
svn checkout svn://localhost/projectA
或者
svn checkout svn://120.77.176.18/projectA #这里的120.77.176.18为你的服务器ip
也可使用简写 svn co svn://120.77.176.18/projectA
需要输入root密码回车,输入svn账号回车,输入svn密码回车
顺便给www目录和其子目录权限
cd /website/www
chmod -R 777 *
更新命令
切换到你的项目目录
cd /website/www/projectA
执行 svn update
svnadmin和svn的命令是不同的,具体可用svnadmin help和svn help查看
客户端连接