Skip navigation.

极湖

无不用其“极”

通过 Subversion 的 hook 自动更新代码

,

用 subversion (以下简称 svn) 做版本管理,可以免去 ftp 上传代码的过程,具体方法是通过 svn 的 commit hook 自动更新代码。

以下是设置的步骤:

切换到 root 用户。
# su -

导出项目。
# cd /home
# svn checkout --username USER_NAME --password USER_PASS http://localhost/svn/PROJECT_NAME/trunk/ PROJECT_NAME
# chown -R USER_NAME PROJECT_NAME


编写 shell 脚本。
# vi /home/USER_NAME/bin/svn_auto_update.sh
输入
#!/bin/sh
date >> /tmp/svn_auto_update
cd /home/PROJECT_NAME
echo "$1 --- $2" >> /tmp/svn_auto_update  2>&1
svn status | awk '/^?/ {print $2}'  | xargs rm -Rvf >> /tmp/svn_auto_update 2>&1
svn update --username USER_NAME --password USER_PASS >> /tmp/svn_auto_update 2>&1

更改脚本的所有者。
# chown -R USER_NAME PROJECT_NAME /home/USER_NAME/bin/svn_auto_update.sh

设置 svn 的 hook。
# cd /home/svnrepo/PROJECT_NAME/hooks
# cp post-commit.tmpl post-commit
# chmod a+x post-commit
# vi post-commit

追加
date >> /tmp/svn_log
/usr/bin/sudo -H -u USER_NAME /home/USER_NAME/bin/svn_auto_update.sh $REPOS $REV >> /tmp/svn_log &


把 apache 用户加入 sudoer。
# usermod -G apache USER_NAME
# visudo

追加
apache  ALL=(USER_NAME) NOPASSWD: /home/USER_NAME/bin/svn_auto_update.sh


说明:

1.以上命令和代码中的 USER_NAME 是用户名,USER_PASS 使用户密码,PROJECT_NAME 是项目名,不同环境会有不同的名字。

2.以上设置,前提是 apache 和 subversion 在同一台机器上,svn 项目已经建立,apache 的 svn 设置也已经做好。

用 CSS 实现 footer 的位置固定Zend Framework 重定向方法(render, forward, redirect)总结

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31