zoukankan      html  css  js  c++  java
  • 配置hooks使svn提交后自动同步客户端代码(客户端与服务端在同一台机器上)

    1、配置svn的hooks

    2、实例演示


    1、配置svn的hooks

     1.1)配置情况

      承接上篇svn搭建的文章,今次继续使用上篇文章的配置

      上篇文章的地址:linux下搭建svn代码库 

      svn仓库所在的目录为/opt/svn/firsttest

     1.2)修改hooks文件post-commit

      我们的任务需求是:当firsttest代码仓库有任何人提交了代码之后,本机器上的某个位置的副本就需要立刻进行svn up操作,这样达到副本的内容和代码仓库的内容相同,可以实时看到情况的目的。

      根据上述的要求,分析下来就是,当有人在 firsttest 提交了代码之后,我们的副本也需要进行更新。所以,我们需要修改的hooks文件就是firsttest/hooks/post-commit。

      查看firsttest/hooks/目录下面的文件:

    # ls
    post-commit.tmpl          post-unlock.tmpl  pre-revprop-change.tmpl
    post-lock.tmpl            pre-commit.tmpl   pre-unlock.tmpl
    post-revprop-change.tmpl  pre-lock.tmpl     start-commit.tmpl

      并没有发现 post-commit 文件,但是可以发现有个 post-commit.tmpl 文件,我们需要做的就是把这个文件重命名成post-commit,或者拷贝一份副本,起个名字叫post-commit。

    # cp post-commit.tmpl post-commit
    root@OutRoot:hooks# ls
    post-commit       post-revprop-change.tmpl  pre-lock.tmpl            start-commit.tmpl
    post-commit.tmpl  post-unlock.tmpl          pre-revprop-change.tmpl
    post-lock.tmpl    pre-commit.tmpl           pre-unlock.tmpl

      现在有 post-commit 文件了,但是还差点儿,把它的权限改为775:

    # chmod 775 post-commit
    root@OutRoot:hooks# ls
    post-commit       post-revprop-change.tmpl  pre-lock.tmpl            start-commit.tmpl
    post-commit.tmpl  post-unlock.tmpl          pre-revprop-change.tmpl
    post-lock.tmpl    pre-commit.tmpl           pre-unlock.tmpl

      # ls -al post-commit
      -rwxrwxr-x 1 root root 1977 06-05 13:47 post-commit

     1.3)编辑 hooks 文件 post-commit

      从 post-commit 的文件名我们就可以看出,是在 commit(合入代码)之后(post)所进行的操作。

      以下是 post-commit 文件的前几行:

    #!/bin/sh
    
    # POST-COMMIT HOOK
    #
    # The post-commit hook is invoked after a commit.  Subversion runs
    # this hook by invoking a program (script, executable, binary, etc.)
    # named 'post-commit' (for which this file is a template) with the 
    # following ordered arguments:

      看英文的大概意思是:post-commit 钩子文件是在执行完一次commit之后执行的。这个hook会执行一个脚本或者可执行文件、二进制文件等。

      那么我们就在这里写上我们需要svn执行的脚本。

      把 post-commit 文件的最后几行改成如下内容:

    REPOS="$1"
    REV="$2"
    
    #mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
    su -c 'svn up /home/test/workspace/firsttest' test

      其中“su -c 'svn up /home/test/workspace/firsttest' test”这句话的意思是:

      切换到test账户,就是你的svn副本是哪个账户就切换到哪个账户,要是root就直接运行“svn up /home/test/workspace/firsttest”就可以了。

      之所以要切换账户,是因为在svn进行update操作的时候会对副本里面的.svn目录下的内容进行修改,有可能会添加新的文件或目录,这样会导致之后的副本里面使用非root账户操作的时候失败。


    2、实例演示

      好累,就先不写了吧。。。  

  • 相关阅读:
    Web.xml配置详解
    JAVA的StringBuffer类
    工作空间造成的javaweb项目无法新建
    典型程序实现代码汇总(1)
    TCP/UDP常见端口参考
    HTTP状态码详解
    struts2的java.lang.NoSuchMethodException异常处理
    python学习之路-6 冒泡算法、递归、反射、os/sys模块详解
    python学习之路-5 基础进阶篇
    python学习之路-4 内置函数和装饰器
  • 原文地址:https://www.cnblogs.com/fengbohello/p/4554287.html
Copyright © 2011-2022 走看看