使用阿里云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