接上一篇

1. 进入 SVN 的 hooks 目录

cd /home/svn/node/hooks

2. 新建post-commit文件

3. 输入以下内容

#!/bin/sh
REPOS=$1
REV=$2
time=`date "+%Y-%m-%d %H:%M:%S"`
export LANG=C.UTF-8

# 当用户提交的时候注释里包含 auto_deploy 字符串的时候才发布到 web 目录
if (/usr/local/svn/bin/svnlook log -r $REV /home/svn/node/ | grep "auto_deploy")
then
echo "start deploy $time" >> /tmp/svn_autocommit.log
/usr/local/svn/bin/svn export --username yimity --password ******* "svn://127.0.0.1" /home/wwwroot/ajax --force --no-auth-cache
fi

为了不使每次提交之后都发布,所以判断下 只有在提交的注释中包含 auto_deploy 时,才发布。
注意其中的 /usr/local/svn/bin/ 和 /home/svn/node/ 以及 /home/wwwroot/ajax 这三个路径,第一个是安装 svn 的路径,上一篇有讲,第二个是 svn 的版本库目录,第三个是网站服务器目录,至于 svn://127.0.0.1 这个则是 svn 的访问目录了,也可以是外部地址,即:工作电脑获取的地址。
注意 export LANG=C.UTF-8 请看问题 2 字符集。

4. 修改权限

chmod +x post-commit

保存,在本地修改保存提交试试看。

出现错误:
1. Store password unencrypted
进入

vi /home/root/.subversion/servers

将所有的

# store-plaintext-passwords = no

改成

# store-plaintext-passwords = yes

即可

2. 字符集
使用

locale -a

查看系统字符集,如我的 VPS 只有

C
C.UTF-8
POSIX

所以设置成 zh_CN.UTF-8 就会出错

然后设置 3 中的

export LANG=C.UTF-8

修改为

export LANG=系统列出来的字符集的名字

3. 权限
如果新建了不同的组和用户(非 root),权限问题的话,肯定应该会有,比较复杂,这里不多说了。

参考:http://blog.51yip.com/server/901.html 以及 http://www.wp1998.net/2012/834.html

此处所说的独立,是指不结合 apache,也就是你的 ubuntu 可以不安装 apache ,然后独立安装这个 Subversion。

虽然说某些事情有前奏非常好,但是咱们这里就不要前奏了,直接进入主题吧。

1. 下载必要的软件
这里以临时目录为基础。
进入临时目录

cd /tmp

然后下载需要的软件

wget http://subversion.tigris.org/downloads/subversion-1.6.1.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.1.tar.gz

(上面二个压缩文件解压后会放到同一个文件下,不要另建文件夹,这一句可忽略)

2. 安装
解压

tar zxvf subversion-1.6.1.tar.gz
tar zxvf subversion-deps-1.6.1.tar.gz

进入目录,编译安装,视服务器性能需要比较长的时间,可以使用 screen 命令

cd subversion-1.6.1/
./configure --prefix=/usr/local/svn
make && make install

此处将 svn 安装到了 /usr/local/svn 目录。

3. 查看 svn 信息

# /usr/local/svn/bin/svnserve --version
svnserve, version 1.6.1 (r37116)
compiled Jul  7 2010, 23:06:21

如果出现类似 version 1.6.1 的信息,说明安装成功了。

4. 将 svn 的 bin 目录加到环境变量中去

# PATH=$PATH:/usr/local/svn/bin
# export PATH

通过键入 svn 查看是否成功

# svn
Type 'svn help' for usage.

出现这样的字样,就说明成功了

5. 建立仓库
5.1 建个 svn 的根目录,因为项目不只一个,默认放到 home 目录中

# mkdir -p /home/svn    #-p 的意思是说如果没有父目录建之

5.2 建个仓库

# mkdir -p /home/svn/node
# svnadmin create /home/svn/node 或者 # svnadmin create /home/svn 记不清楚了

5.3 导入数据

# svn import ./svntest file:///home/svn/node -m "Initial repository test"
Adding         svntest/test.php
Committed revision 1.

./svntest 为要导入的目录,里面还有相应的项目文件此处使用 test.php 测试。如果出现如上例代码中的字样,则表示导入数据成功

6. 配置
6.1 修改 svnserve.conf(/home/svn/node/conf)

# vi svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd

6.2 修改用户密码文件 passwd

# vi passwd
[users]
yimity = ******(密码)

vi 的使用这里就不说了,i 进入编辑模式,修改完成后按 esc 进入一般模式,然后 :wq 保存退出。

7. 启动

# svnserve -d -r /home/svn/node

然后在本地安装 svn 客户端,获取就可以了。

参考:linux svn安装和配置,不结合apache