今天在 Ubuntu 环境下部署 svn 版本控制服务。
一、下载安装
# apt-get install subversion
二、创建目录
# mkdir /home/svn
# mkdir /home/svn/repository
# chmod -R 777 /home/svn/repository
三、创建仓库
# svnadmin create /home/svn/repository
查看 repository 目录:
# cd /home/svn/repository
/home/svn/repository# ls -l
total 24
-rw-r--r-- 1 root root 246 Sep 2 14:13 README.txt
drwxr-xr-x 2 root root 4096 Sep 2 14:13 conf
drwxr-sr-x 6 root root 4096 Sep 2 14:13 db
-r--r--r-- 1 root root 2 Sep 2 14:13 format
drwxr-xr-x 2 root root 4096 Sep 2 14:13 hooks
drwxr-xr-x 2 root root 4096 Sep 2 14:13 locks
四、修改配置文件
进入配置文件:
root@docker:/home/svn/repository# cd conf
root@docker:/home/svn/repository/conf# ls -l
total 20
-rw-r--r-- 1 root root 1080 Sep 2 14:13 authz
-rw-r--r-- 1 root root 885 Sep 2 14:13 hooks-env.tmpl
-rw-r--r-- 1 root root 309 Sep 2 14:13 passwd
-rw-r--r-- 1 root root 4371 Sep 2 14:13 svnserve.conf
1、修改 svnserve.conf
vim svnserve.conf
将以下参数去掉注释:
[general]
anon-access = none #匿名访问权限,默认 read,none 为不允许访问
auth-access = write #认证用户权限
password-db = passwd #用户信息存放文件,默认在版本库 /conf 下面,也可以绝对路径指定文件位置
authz-db = authz
2、修改 passwd 文件
vim passwd
添加用户名和密码,例如
corwien = corwien_123
3、修改 authz 文件
vim authz
在 [group] 下面加上:
admin=corwien
[/]
@admin=rw
五、启动 svn 服务
# svnserve -d -r /home/svn
查看进程是否已经开启:
# ps aux | grep svnserver
root 134 0.0 0.0 11460 1052 pts/1 S+ 14:22 0:00 grep --color=auto svnserver
从上面看,进程已经开启了。
六、在客户端测试
我们搭建的 svn 服务地址为:svn://ip/repository
注意 : 默认端口是 3690,要开放此端口。
七、设置开机自启
先查一下 svnserve 的位置
which svnserve
例如返回
/usr/bin/svnserve
记住这个,后面脚本需要
开始写脚本
cd /etc/init.d
vim svn.sh
打开后写入
#!/bin/bash
/usr/bin/svnserve -d -r /home/.svn
保存退出后给文件添加可执行权限
chmod +x /etc/init.d/svn.sh
打开 /etc/rc.d/rc.local
, 在新行添加
etc/init.d/svn.sh
重启系统,看看 svn 有没有启动
七、钩子
进入项目 svn 找到 hooks 文件夹
root@docker:/home/svn/repository/hooks# ls -l
total 36
-rwxr-xr-x 1 root root 2634 Sep 2 14:13 post-commit.tmpl
-rwxr-xr-x 1 root root 2773 Sep 2 14:13 post-lock.tmpl
-rwxr-xr-x 1 root root 2994 Sep 2 14:13 post-revprop-change.tmpl
-rwxr-xr-x 1 root root 2605 Sep 2 14:13 post-unlock.tmpl
-rwxr-xr-x 1 root root 4038 Sep 2 14:13 pre-commit.tmpl
-rwxr-xr-x 1 root root 3621 Sep 2 14:13 pre-lock.tmpl
-rwxr-xr-x 1 root root 3469 Sep 2 14:13 pre-revprop-change.tmpl
-rwxr-xr-x 1 root root 3309 Sep 2 14:13 pre-unlock.tmpl
-rwxr-xr-x 1 root root 3754 Sep 2 14:13 start-commit.tmpl
svn 的 hooks 模版功能介绍
start-commit 提交前触发事务
pre-commit 提交完成前触发事务
post-commit 提交完成时触发事务
pro-revprop-change 版本属性修改前触发事务
post-revprop-change 版本属性修改后触发事务
post-lock 对文件进行加锁操作之后执行该脚本
示例:
chmod 755 post-commit && vim post-commit
#!/bin/sh
# POST-COMMIT HOOK
REPOS="$1"
REV="$2"
export LANG=en_US.UTF-8
SVN=/usr/bin/svn #这里配置的是 svn 安装 bin 目录下的 svn 文件
WEB=/var/www/myweb #要更新的目录
$SVN update $WEB --username adm --password adm
chown -R www:www $WEB
进入 /var/www/myweb
文件夹手动检出一份 svn 版本库下次更新 svn 版本就会自动更新到服务器
相关文章:
ubuntu 下安装 svn
Ubuntu 14.04 快速搭建 SVN 服务器及日常使用【转】
SVN 实践笔记(理论概念)– 版本控制