好的!在结束了上一博客教程的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 LOGFILE=C:\post-commit.log SET REPOS=%1 SET REV=%2 SET TXN_NAME=%3 ::UUID svnlook uuid %REPOS% > .\data.txt SET /p UUID=< .\data.txt ::AUTHOR svnlook author %REPOS% -r %REV% > .\data.txt SET /p AUTHOR=< .\data.txt ::LOG svnlook log %REPOS% -r %REV% > .\data.txt SET /p LOG=< .\data.txt ::DATE svnlook date %REPOS% -r %REV% > .\data.txt SET /p DATE=< .\data.txt echo %REPOS% %REV% %TXN_NAME% %UUID% >> %LOGFILE% ::================================================== ::CHANGE svnlook changed %REPOS% -r %REV% > .\data.txt for /f "delims=" %%i in (.\data.txt) do (set CHANGE=%%i)&(goto exit_change_for) :exit_change_for ::TYPE for /f "tokens=2 delims= " %%t in ("%CHANGE%") do for /f "tokens=1 delims=http://www.mamicode.com/" %%c in ("%%t") do set TYPE=%%c ::TAG for /f "tokens=2 delims= " %%t in ("%CHANGE%") do for /f "tokens=2 delims=http://www.mamicode.com/" %%c in ("%%t") do set TAG=%%c ::====================================================== 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=‘‘ 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%\"}" set curl=C:\curl.exe %curl% -i -X POST -H "Content-Type: application/json" --data %post_data% %url%
View Code将相应 post-commit.bat 文件放到相应的货仓hooks目录下
=============================================================================
下面就是测试 post-commit 的实现效果了。。。。
(1)首先checkout 在VisaulSVN处事器下创建的 test 货仓 到本身想要的目录下。(点击鼠标右键就可以看到相应的 svn checkout操纵)
(2)checkout结束之后,在copy下来的test货仓里面添加或者更新相应的文件或目录。
(3)完成上面的操纵后,鼠标右键发明svn commit 操纵,然后点击实现。
固然这里会呈现各类百般的bug。还是需要去解决的。
windows下svn post-commit的实现
标签:
原文地点:https://www.cnblogs.com/xautxuqiang/p/8961770.html