使用yum安装svn
- 安装
yum install subversion -y
-y :自动应答为‘yes’ ,省的老询问,让你输入‘yes or no’。
- 安装完成后,输入命令:
svn --version
打印出版本号,说明安装成功。好,第一步已迈出,go on!
建立svn项目仓库
-
开始创建仓库
首先说明下,最好先创建一个存放svn仓库的文件夹,然后一个项目建一个仓库。那么按照这个思路开始:
-
先创建一个svn仓库根的文件夹
mkdir /data/svnCangKu
注:mkdir命令是创建文件夹命令,后面是要创建的路径与文件夹名称,我这里创建了/data/下的名为“svnCangku”文件夹。为了方便理解,我就用比较low的拼音命名了,你们可以命名的高大上一点。
-
创建仓库
比如你现在有一个项目taobao,一个项目jingdong。那么要为两个项目创建各自的svn仓库。
项目taobao仓库创建:
svnadmin create /data/svnCangKu/taobao
项目jingdong仓库创建:
svnadmin create /data/svnCangKu/jingdong
两个仓库创建完毕,开始配置。
-
-
配置
以taobao为例:
-
进入到taobao的配置
cd /data/svnCangKu/taobao/conf/ ls
执行
ls
命令后发现,里面有三个文件:‘authz’,‘passwd’,‘svnserve.conf’- 配置svnserve.conf(配置版本库信息、用户文件和用户密码文件的路径、版本库路径)
vim svnserve.conf
修改下面列出的项,将前面的“#”和空格都删掉。#号是注释的意思,不删空格会报错。
anon-access = none //默认是只读read,改为none让游客不能看 auth-access = write //认证后有写入权限 只删#和空格 password-db = passwd //帐号密码配置文件 只删#和空格 authz-db = authz //权限配置文件 只删#和空格 realm = /data/svnCangKu/taobao //改成自己的项目仓库
-
配置authz(svn组和组用户的权限)
在此文件最下面一行加上
[/] //指定仓库根目录下的权限 chaixuhong = rw //用户"chaixuhong" 权限为可读可写
-
配置passwd(用户密码)
在此文件最下面一行加上
yonghu=123456 //用户"yonghu" 密码为123456
至此:svn配置结束,是不是感觉有点简单,但是的确配置完了。。。
配置jingdong与上述一样,我介绍的这种是多仓库模式,就是说一个项目一个仓库,每建一个项目,都需要配置一个仓库,这种方式的好处是项目查看自己的版本很清楚,不会被其他项目搞乱。也可以就建立一个仓库,然后在这个仓库分项目,也就是分文件夹。没什么特别的,只是使用方式不同。
-
启动服务
svnserve -d -r /data/svnCangKu
-d 表示svnserve 将会作为一个服务程序运行在后台
-r表示把/data/svnCangKu/目录作为根目录
查看是否启动成功
ps -ef | grep svnserve
如果输出一条信息,说明启动失败,如果输出两条,则启动成功!
关闭服务
killall svnserve
检出svn中项目
上述安装、配置、启动都完成后,我们测试下项目检出。
随便找个路径下,建个文件夹
mkdir /data/test
cd /data/test
进入test文件夹后,执行检出
svn checkout svn://127.0.0.1/taobao ./
如果提示检出成功,版本号为0。那么就可以在自己的电脑上连接svn做操作了。用自己电脑上的svn客户端进行检出,提交,更新等。
注:如果在服务器可以检出,在自己电脑不可以,可能原因是svn端口未开放,请在iptables文件里添加3690端口开放,或者直接关闭防火墙(不建议)。如果使用的是阿里的服务器,还需在安全组里添加出方向的规则。
其他配置
提交代码后同步更新服务器代码
我的需求,我用hexo搭建的博客,部署到了自己的服务器,当我修改博客提交代码的时候,我希望服务器上的博客也自动更新。
实现:
- 进入到svn仓库里,如上面的taobao
cd /data/svnCangKu/taobao
- 进入hooks文件夹
cd hooks/
- 复制一个post-commit文件
cp post-commit.tmpl post-commit
- 编辑这个文件
vim post-commit
- 添加以下内容
REPOS="$1"
REV="$2"
BASEPATH=/www/hexo/blog //这里是你博客项目在服务器检出的文件夹
WEBPATH="$BASEPATH/"
export LANG=zh_CN.UTF-8
#svn revert $WEBPATH --username yonghu --password 123456 --no-auth-cache #强制更新
svn update $WEBPATH --username yonghu --password 123456 --no-auth-cache
- 增加
post-commit
脚本执行权限
chmod +x post-commit
- 重启svn服务
killall svnserve
svnserve -d -r /data/svnCangKu
完毕!可以在本地提交一个新文件,然后到服务器上hexo目录查看是否有更新