zoukankan      html  css  js  c++  java
  • windows下svn post-commit的实现

    前言:

           好的!在结束了上一博客教程的Subversion安装之后。我们开始了下一项工作,windows版本下 svn post-commit的实现。说实话,这方面的知识网上的知识并不是很多~~~~~~~。

           >>>post-commit是干什么的?

           当用户实现commit操作之后,就会执行相应的post-commit文件里的内容。实现commit后的触发器效果。

           >>>那么这个  post-commit.bat 文件应该放在哪里呐?

            嗯嗯,这个问题主要取决于你安装VisualSVN Server时选择安装Repository的目录位置。这里就假如你选择了默认安装位置 C:Repository 下吧。

            当你在VIsualSVN Server下创建了相应的repository后,假如你创建的仓库名字为 test。那么在你的 C:Repository 下就会生成相应的 test 仓库。

            好的,现在就把你的 post-commit.bat 文件放到 C:Repository esthooks 目录下吧。

    ================================================================================

    好的。下面就需要实现相应的 post-commit.bat 文件的功能啦。当然,每个人的需求时不一样的啦。我这里是提取出相应的svn数据信息,然后通过curl工具

    将相应的数据post到对应的url。

    下面是我编写的post-commit.bat, 大家可以作为参考(当然啦~。~,这里你还得熟悉熟悉windows的批处理。。。。。):

    @echo on
    :: 将该文件放置到svn repository的hooks目录,如D:subversion	esthooks
    :: 1. 名字一定要是post_commit
    :: 2. 修改case里面的curl为easyops应用流水线的svn钩子
    
    SET REPOS=%1
    SET LOGFILE=%REPOS%post-commit.log
    SET REV=%2
    SET TXN_NAME=%3
    
    
    ::UUID
    for /f "delims=" %%t in ('svnlook uuid %REPOS%') do set UUID=%%t
    
    ::AUTHOR
    for /f "delims=" %%t in ('svnlook author %REPOS% -r %REV%') do set AUTHOR=%%t
    
    ::LOG
    for /f "delims=" %%t in ('svnlook log %REPOS% -r %REV%') do set LOG=%%t
    
    ::DATE
    for /f "delims=" %%t in ('svnlook date %REPOS% -r %REV%') do set DATE=%%t
    
    echo %REPOS% %REV% %TXN_NAME% %UUID% >> %LOGFILE%
    
    ::==================================================
    ::CHANGE
    for /f "delims=" %%i in ('svnlook changed %REPOS% -r %REV%') do set CHANGE=%%i
    
    ::TYPE
    for /f "tokens=2 delims= " %%t in ("%CHANGE%") do for /f "tokens=1 delims=/" %%c in ("%%t") do set TYPE=%%c
    
    ::TAG
    for /f "tokens=1 delims= " %%t in ("%CHANGE%") do set TAG=%%t
    
    ::======================================================
    
    echo "judge from %CHANGE%, type is %TYPE%" >> %LOGFILE%
    
    
    :: 按应用需求,在不同的类型里面填入easyops的svn钩子url,如果不区分分支,则在*)里面填
    
    if "%TYPE%"=="trunk" goto label_trunk
    if "%TYPE%"=="tags"  goto label_tag
    if "%TYPE%"=="branchs" (goto label_branchs) else goto label_all
    
    :label_trunk
    SET url="http://r.easyops.cn/hook/subversion/org/1888/app/5ac9dd6f01ca7/pipeline/4dc5522c75d5d5e68e5b0d89925c3802"
    goto exit_type
    
    :label_tags
    SET url=""
    ::url='http://admin.easyops.local/hook/subversion/org/1888/app/598beb9fbcc06/pipeline/85df75da575635744a1f2feefa913a61'
    goto exit_type
    
    :label_branchs
    SET url=""
    goto exit_type
    
    :label_all
    SET url="" && goto exit_type
    
    :exit_type
    
    if "%url%"=="" (echo "not found trigger url in %TYPE% type, exit" >> %LOGFILE% && exit 0) else echo "will trigger %url%"  >> %LOGFILE%
    
    
    ::将win下路径的  替换为 \ 。不然会出现格式问题
    set REPOS=%REPOS:=\%
    set REV=%REV:=\%
    set TXN_NAME=%TXN_NAME:=\%
    set UUID=%UUID:=\%
    set TAG=%TAG:=\%
    set AUTHOR=%AUTHOR:=\%
    set DATE=%DATE:=\%
    set TYPE=%TYPE:=\%
    
    ::generate_post_data
    set post_data="{"repos": "%REPOS%","rev":"%REV%","txn_name":"%TXN_NAME%","uuid":"%UUID%","type":"%TYPE%","tag":"%TAG%","author":"%AUTHOR%","date":"%DATE%"}"
    
    
    ::设置curl文件的位置
    set curl=C:curl.exe
    %curl% -i -X POST -H "Content-Type: application/json" --data %post_data% %url%

    将相应 post-commit.bat 文件放到相应的仓库hooks目录下

    =============================================================================

    下面就是测试 post-commit 的实现效果了。。。。

    (1)首先checkout 在VisaulSVN服务器下创建的 test 仓库 到自己想要的目录下。(点击鼠标右键就可以看到相应的 svn checkout操作)

    (2)checkout结束之后,在copy下来的test仓库里面添加或者更新相应的文件或目录。

    (3)完成上面的操作后,鼠标右键发现svn commit 操作,然后点击实现。

    当然这里会出现各种各样的bug。还是需要去解决的。

  • 相关阅读:
    封了1000多个IP地址段,服务器现在坚如磐石,对付几个小毛贼还是很轻松的
    这两周服务器被攻击,封锁了600多个IP地址段后今天服务器安静多了
    centos clamav杀毒软件安装配置及查杀,没想到linux下病毒比windows还多!
    JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox
    一个实战系统的权限架构思维推导过程
    股灾情形下搞了个满堂红,我也是醉了
    VBC#代码互转工具
    DSAPI多功能.NET函数库组件
    DS标签控件文本解析格式
    DSAPI官方QQ群
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/8961770.html
Copyright © 2011-2022 走看看