怎么用SVN钩子自动更新项目

  介绍

这篇文章主要讲解了“怎么用SVN钩子自动更新项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习”怎么用SVN钩子自动更新项目”吧!

<强>使用post-commit更新

1。SVN服务器地址:192.168.31.33

2. web服务器地址:192.168.31.34

3. SVN版本库地址:/home/SVN/qxy

4. web项目地址:/home/wwwroot qxy

5。由于SVN和web并不在同一服务器上,所以涉及到ssh登录,并且需要设置免密钥登录

<强>个人SVN同步实现原理

1。开发人员本地电脑通过SVN Commit版本到SVN服务器上。

2。SVN服务器post-commit检测到有版本变更,根据其中的定义设置通过ssh方式登录到web服务器执行SVN update操作

3。我需要记录一些信息,所以采用了ssh登录后执行特定   脚本进行更新操作

钩子位置位于SVN服务器/home/SVN/qxy/钩子目录下,默认提供了常用钩子:

 (root@docker_server 钩),噢
  total  36
  -rw-r——r, 1, root  root  1977年,Sep , 1, 16:49  post-commit.tmpl
  -rw-r——r, 1, root  root  1638年,Sep , 1, 16:49  post-lock.tmpl
  -rw-r——r, 1, root  root  2289年,Sep , 1, 16:49  post-revprop-change.tmpl
  -rw-r——r, 1, root  root  1567年,Sep , 1, 16:49  post-unlock.tmpl
  -rw-r——r, 1, root  root  3426年,Sep , 1, 16:49  pre-commit.tmpl
  -rw-r——r, 1, root  root  2434年,Sep , 1, 16:49  pre-lock.tmpl
  -rw-r——r, 1, root  root  2786年,Sep , 1, 16:49  pre-revprop-change.tmpl
  -rw-r——r, 1, root  root  2122年,Sep , 1, 16:49  pre-unlock.tmpl
  -rw-r——r, 1, root  root  2780年,Sep , 1, 16:49  start-commit.tmpl 

<强>授权SVN服务器面密钥登录到web服务器

1。在SVN服务器上生成密钥文件:

 ssh-keygen  -t  rsa 

连续回车即可,生成的文件位于/根/sh/下,查看需要ls -a    命令

2。复制密钥文件到web服务器上:

 ssh-copy-id 小姐;/root/. ssh/id_rsa.pub , root@192.168.31.34 

该操作需要输入web服务器根密码

3。复制完成后/根/sh下会生成一个known_hosts文件,里面记录了授权信息(加密的)

<强>编辑post-commit文件

 cp  post-commit.tmpl  post-commit
  vim  post-commit
  # !/bin/bash
  “回购=?美元;
  “牧师=?美元
  日志文件=/var/log/svn.log
  和“exec  1祝辞;LOGFILE"美元;
  exec  2祝辞,1
  export  LC_CTYPE=癳n_US.UTF-8"
  export  LC_ALL=SVNLOOK=/usr/bin/SVNLOOK
  时间=$ (date “+ Y % - % - % d  % H: % m: % S")
  作者=$(美元SVNLOOK  author  -r  REV 美元;“REPOS"美元)
  CHANGEDDIRS=$(美元SVNLOOK  dirs-changed 回购美元)
  消息=$(美元SVNLOOK  log  -r  REV 美元;“REPOS"美元)
  ,
  function  myecho (), {
  ,,,echo “TIME"美元;,“$ *“;
  }
  myecho “* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *”;
  myecho “提交版本:$ REV  AUTHOR"美元;
  myecho “提交备注:$ MESSAGE"
  myecho “修改目录:$ (echo  CHANGEDDIRS 美元;|,tr  & # 39; \ n # 39;, & # 39;, & # 39;)“;
  ,
  ssh  root@192.168.31.34 “/home/svnup.sh"在/dev/null 

<>强增加   脚本执行权限

 chmod  744年,post-commit 

<强> web服务器上新建匹配脚本

 vim /home/svnup.sh
  ,
  # !/bin/bash
  日志文件=/var/log/svnup.log
  echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻,在美元的在日志文件
  echo  $ (date  +“y % - % - % d  % H: % m: % S"),在美元的在日志文件
  svn  update /home/wwwroot/qxy 在祝辞日志文件
  echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;,在祝辞美元日志文件

<强>脚本测试

直接在SVN服务器上运行钩子sh post-commit,如果一切正常,对应的两个日志文件中都会生成日志信息,web服务器上虽然没有版本更新,但是也会产生更新的记录

开发电脑推送版本到SVN服务器测试,如果出现错误,会有post-commit的相关提示,一般都是钩子中   命令问题,详细排错即可。

怎么用SVN钩子自动更新项目