前言:

好的!在结束了上一博客教程的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\test\hooks 目录下吧。

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

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

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

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

@echo on
:: 将该文件放置到svn repository的hooks目录,如D:\subversion\test\hooks
:: 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。还是需要去解决的。

windows下svn post-commit的实现的更多相关文章

  1. Windows下SVN服务器搭建方法整理(apache)

    http://skydream.iteye.com/blog/437959 http://www.cnblogs.com/liuke209/archive/2009/09/23/1572858.htm ...

  2. Windows下SVN权限配置

    Windows下SVN权限配置          按照前面的教程装完1.6.1版以后,当svnadmin create D;\svn创建仓库后,应该在仓库目录下的config目录有3个文件— auth ...

  3. 研究windows下SVN备份及还原恢复方案

    windows下SVN备份方案 备份策略 svn备份一般采用三种方式: 1)svnadmin dump  2)svnadmin hotcopy  3)svnsync.  注意,svn备份不宜采用普通的 ...

  4. Windows下SVN权限配置过程详解

    本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...

  5. Windows下svn客户端和服务器的安装使用

    svn,全称subversion, 是目前用的较多的开源的版本管理工具.相信有些经历的程序员应该都听说过它. 通常的svn服务器是搭建在Linux中,不过如果作为个人或者单个小组使用的话,就可以把sv ...

  6. Windows下SVN服务器及客户端的使用

    原文地址:windows下配置VisualSVN Server服务器 作者:Deem_passion 下载安装文件: 服务端安装文件:VisualSVN-Server-1.6.2 客户端安装文件:To ...

  7. Windows下SVN服务器的搭建步骤

    1.下载svn服务端和客户端 服务端VISUALSVN SERVER:https://www.visualsvn.com/ 客户端TortoiseSVN:https://tortoisesvn.net ...

  8. SVN学习之windows下svn的安装

    svn是apache的一个开源项目,全称为subversion.是一个基于版本的项目管理软件,一般在多人开发的项目中使用,目前svn已经替代了原来的cvs.大多数情况下,svn服务安装在linux服务 ...

  9. Windows下.svn文件夹的最简易删除方法

    如果想删除Windows下的.svn文件夹,通过手动删除的渠道是最麻烦的,因为每个文件夹下面都存在这样的文件. 下面是一个好办法: 建立一个文本文件,取名为kill-svn-folders.reg(扩 ...

随机推荐

  1. 发现一个比较好玩的,git的仓库可以转换

    我们通过 git clone 下载一个仓库到本地, 1.这个本地的文件夹名字可以随便改. 2.如果你把本地仓库的全部文件,剪切到另一个文件夹内,这个新的文件夹就是git的本地仓库.

  2. web项目获取路径

    Java获取路径的各种方法:  (1).request.getRealPath("/"); //不推荐使用获取工程的根路径 (2).request.getRealPath(requ ...

  3. Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写。

    Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写. 前提:已经安装过VS2017且进行过配置. 第一部分: Python环境的搭建: 建议 ...

  4. 2020 安恒2月月赛 misc

    题目链接:https://pan.baidu.com/s/19l54Nukt6evOr4UgbHMXIQ 提取码:1qbs 0x01 lemonEssence 咦?在kali打开是出错,改宽后图片变了 ...

  5. VLAN配置Trunk接口

    实验二:配置Trunk接口. 实验原理: 实验内容: 本实验模拟某公司网络场景.公司规模较大,员工200余名,内部网络是-一个大的局域网.公司放置了多台接入交换机(如S1和S2)负责员工的网络接入.接 ...

  6. LCT 维护边双 / 点双的模板

    用 \(\text{LCT}\) 维护边双的做法是:加入一条非树边时,将这段树上路径合并为一个点代表这个边双,具体实现用并查集合并点,在 \(\text{Splay}\) 与 \(\text{Acce ...

  7. 解决 C# .NET WebClient WebRequest请求缓慢的问题

    [编程环境]Visual Studio 2010, NET4.0 [开发语言]C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 [问题描述] 使用HttpWebRequ ...

  8. cglib用法

    CGLib动态代理的介绍及用法(单回调.多回调.不处理.固定值.懒加载) 参照: https://blog.csdn.net/difffate/article/details/70552056 前面介 ...

  9. GO第归

    Go 语言递归函数 递归,就是在运行的过程中调用自己. 语法格式如下: func recursion() {    recursion() /* 函数调用自身 */ } func main() {   ...

  10. python3.8+PySimpleGUI+进度条代码大全

    1.python3.8+PySimpleGUI+进度条大全 2.效果图: 3.代码: #导出模块 import PySimpleGUI as sg import time import inspect ...