ubuntu安装svn服务端并且让文件同步更新到web目录

    使用阿里云ubuntu系统做公共服务器,由于需要多人协同开发一个php项目,所以打算使用svn做开发的版本控制,因为项目当中需要写app接口供Android跟ios使用,为了保证代码的时效性,所以必须把代码文件实时同步更新到web目录下,实现的步骤如下:

    ubuntu安装svn服务端的操作比较简单,用apt-get指令就能完成安装

安装软件包:

sudo apt-get install subversion

安装完成之后,选择SVN服务文件及配置文件的放置位置。我是放在了/home下的svn目录。

cd /home

sudo mkdir svn

svn目录建好了之后,创建一个版本仓库目录

cd /home/svn

sudo mkdir test

目录建好后 创建版本仓库

sudo svnadmin create /home/svn/test

执行之后,我们可以查看test目录下的文件机构:

tone@ubuntu:/srv/svn/tone_src$ ls -l


总用量 24
drwxr-xr-x 2 root root 4096  1月 15 10:52 conf
drwxr-sr-x 6 root root 4096  1月 15 14:52 db
-r--r--r-- 1 root root    2  1月 15 10:50 format
drwxr-xr-x 2 root root 4096  1月 15 10:50 hooks
drwxr-xr-x 2 root root 4096  1月 15 10:50 locks
-rw-r--r-- 1 root root  246  1月 15 10:50 README.txt

svn服务端到这里就算安装完成了,但是在svn客户端还不能连接,还要对版本仓库里面conf目录下的三个文件进行配置。配置方法如下:

我们需要修改conf目录下的三个文件,authz;passwd;svnserve.conf

编辑svnserve.conf

[general]
#匿名用户不可读
anon-access = none
#权限用户可写
auth-access = write
#密码文件为passwd
password-db = passwd
#权限文件为authz
authz-db = authz

编辑authz 制定管理员组 即admin组的用户为tone admin组有rw(读写权限) 所有人有r(读权限),这里组的名字 不一定叫admin 你的管理员组名 可以叫做任意的名字,另外比如admin组还有其他用户,可以这样制定 admin=tone,tone1,tone2 类似这样的写法

[groups]
admin= tone

[/]
@admin =rw
*=r

编制passwd 文件 设定用户密码

[users]
# harry = harryssecret
# sally = sallyssecret
tone=www

tone的密码为www 对 没看错 用户密码是明文的。

以上都做完之后,就可以开启你的svn服务器了。

sudo svnserve -d -r /home/svn/

-d 已守护模式启动

-r 制定svn版本库根目录 这样是便于客户端不用输入全路径 就可以访问版本库了

例如:svn://127.0.0.1/test

    到这里,svn客户端就能远程连接到阿里云服务器上的svn服务端,进行checkout,commit,update操作都没有问题。

    但是提交到服务器上面的代码是放在svn版本仓库里面,并且是以svn的方式存放的,如果andorid跟ios要想调用服务器上的程序,似乎行不通,所以就必须把提交到服务器上的代码同步更新到web目录下,这样android跟ios才能统一调用服务器上的接口程序。

    代码文件同步更新到web目录的配置如下

1、创建web目录文件并设置文件权限,如果已有web目录,这一步就可以省略(svn上的项目名称要与web项目目录要一样)。

cd /var
mkdir www
chmod 755 www

2.检出版本仓库的副本到/var/www

svn co file:///home/svn/test

3.增加hooks(钩子)文件,文件放在版本仓库hooks目录下,里面有个post-commit.tmpl模板文件,复制到一份新建文件到post-commit

cp post-commit.tmpl post-commit

编辑该文件,在文件中写入:

#!/bin/sh

REPOS="$1"

REV="$2"

export LANG=en_US.UTF-8

#注意这里设置成自己想要更新的目录,已经用户名和密码

sudo svn update /var/www/test --username linxb --password 123123

大功告成,到这里就可以实现svn同步到web目录了

可能出现的问题

1. Warning: post-commit hook failed (exit code 255) with no output.

如果执行提交时SVN提示255错误,则是 post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限。

chmod +x post-commit

 

转载于:https://my.oschina.net/linxb/blog/760049

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值