Linux CentOS 搭建SVN并用钩子自动实现同步到Web目录
阅读原文时间:2023年07月09日阅读:1

linux安装配置SVN并设置钩子

系统环境:CentOS-6.3
安装方式:yum install (源码安装容易产生版本兼容的问题)
安装软件:系统自动下载SVN软件

#检查是否安装了低版本的SVN

1

rpm -qa subversion

#卸载旧版本SVN

1

yum remove subversion

1

yum -y install subversion

检验已经安装的SVN版本信息

1

svnserve --version

SVN软件安装完成后还需要建立SVN库

1

2

mkdir -p /www/svndata

svnadmin create /www/svndata/test

执行上面的命令后,自动建立svndata库,查看/www/svndata/test 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。

进入上面生成的文件夹conf下,进行配置

1

cd /www/svndata/test/conf

用户密码passwd配置

1

2

cd /www/svndata/test/conf

vim passwd

修改passwd为以下内容:

1

2

3

4

[users]

# harry = harryssecret

# sally = sallyssecret

cqh=123456

权限控制authz配置

1

vim authz

目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

1

2

3

#设置[/]代表根目录下所有的资源

[/]

cqh=rw

服务svnserve.conf配置

1

vim svnserve.conf

追加以下内容:

1

2

3

4

5

6

7

8

9

10

11

[general]

#匿名访问的权限,可以是read,write,none,默认为read

anon-access=none

#使授权用户有写权限

auth-access=write

#密码数据库的路径

password-db=passwd

#访问控制文件

authz-db=authz

#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字

realm = My First Repository

1

svnserve -d -r /www/svndata

1

2

[root@localhost conf]# ps -ef|grep svn|grep -v grep

root     12538     1  0 14:40 ?        00:00:00 svnserve -d -r /www/svndata

1

2

[root@localhost conf]# netstat -ln |grep 3690

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN

1

2

[root@localhost password]# killall svnserve //停止

[root@localhost password]# svnserve -d -r /www/svndata // 启动

SVN服务已经启动,使用客户端测试连接。 
客户端连接地址:svn://xxx.xxx.xxx.xxx/test
用户名/密码: cqh/123456
测试创建文件夹等操作。

实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新web目录的方法,我们要在svn版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现Linux下SVN自动更新web目录配置。 
第一步:建立你的web程序目录

1

mkdir /``var``/www/html/test

进入你建立的web程序目录(svn checkout可以简写为co)

1

2

svn checkout svn:``//localhost/svntest //不重命名文件夹,直接在当前目录下检出

svn checkout svn:``//localhost/svntest test //检出文件并且重命名文件夹

第二步:在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】

添加脚本内容如下

1

2

3

4

5

export LANG=en_US.UTF-8

SVN=/usr/bin/svn            #这里配置的是svn安装bin目录下的svn文件

WEB=/``var``/www/html/test      #要更新的目录

$SVN update $WEB --username cqh --password 123456

chown -R www:www $WEB

其中SVN=右边改成 svn 命令位置 
WEB=右边改成你实际的web目录

第三步:让post-commit有执行的权限

1

chmod a+x post-commit

第四步:这里就已经完成了,第四步就是测试了。

说明: 
export LANG=en_US.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为

1

svn: Can``'t convert string from native encoding to '``GBK'

/usr/bin/svn update --username cqh --password 123456 /var/www/html/test 执行更新操作 
如果提示:

1

post-commit hook failed (``exit code 255) with no output

赋予post-commit文件可执行权限 
如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章