2
今天在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

clipboard.png

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版本就会自动更新到服务器

检出工程:svn checkout SVN仓库URL 任意本地磁盘工作目录


相关文章:

ubuntu下安装svn
Ubuntu 14.04快速搭建SVN服务器及日常使用【转】
SVN实践笔记(理论概念)--版本控制


Corwien
6.3k 声望1.6k 粉丝

为者常成,行者常至。