我有一个需求svn的需求

比方说我svn提交之后,我想触发一个动作,把某个文件夹通过ftp上传的另一个远程的服务器。钩子我只会写同步目录的。按理说,用钩子去执行shell脚本。具体要怎么写,shell脚本要怎么写。

阅读 3.3k
2 个回答

题主的意思是,svn提交代码后,执行特定部署任务。这个用钩子(hook)脚本做到。

具体到svn,在服务器的svn仓库中,svn_repo/hooks/post-commit里面写shell脚本就可以了。svn_repo是你服务器上的svn仓库目录。

我的post-commit代码写的不怎么样,不过你可以参考下:

REPOS="$1"  
REV="$2"  
    
export LANG=zh_CN.UTF-8  
    
SVN_PATH=/usr/bin/svn  
WEB_PATH=/var/www/html/xxx.yyy.com  
TEMP_PATH=/var/www/html/xxx.yyy.com/temp  
  
CURDATE=`date`  
  
LOG_PATH=/tmp/svn_some_update.log  
echo "   "  
echo "---code deployed at $CURDATE---" >> $LOG_PATH 2>&1  
echo `whoami`,$REPOS,$REV >> $LOG_PATH  
/usr/bin/svn update --username username --password password $WEB_PATH --no-auth-cache >> $LOG_PATH 2>&1  
echo "---code deployed end---"    

以及,注意权限:

chmod +x post-commit    # 可执行
chown apache:apache post-commit  # apache组。如果你用的不是apache,那就相应地改掉

最直接的方法是,修改 SVN 服务器目录下的 hook/post-commit 脚本,在提交成功后会自动执行这个脚本。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进