2017-10-06 105 views
0

所以我有一個post-commit掛鉤觸發了我們的Jenkins服務器上的構建。一切正常,除非我嘗試通過SVN回購中的更改文件進行循環。問題是提交實際掛起,如果我註釋掉循環,更改文件被記錄在哪裏,則提交成功完成。批處理腳本通過SVN更改文件循環

我使用SVN diff命令,這似乎是我想要的,將當前修訂版本與HEAD修訂版本進行比較。它在硬編碼值的命令行上工作,但不會在我的循環中使用從SVN本身填充的%1%和%2%。

到目前爲止我的代碼:

@echo off 
setlocal enabledelayedexpansion 

SET REPOS=%1% 
SET TXN=%2% 

for /f "tokens=*" %%a in ('svnlook author -r !TXN! !REPOS!') do set AUTH_NAME=%%a 
SET EMAILS="!AUTH_NAME!"@gmail.com 

SET /a OLDTXN=!TXN! - 1 

for /f "tokens=*" %%a in ('svn diff --summarize -r !OLDTXN!:!TXN! <repo URL>') do (
    set FILES=%%a 
    rem python D:\csvn\data\repositories\Test\hooks\compile_file.py !FILES! 
) 

其中「回購網址」是SVN根回購在我硬編碼,這是罰款。 現在,例如,如果我註釋掉SET TXN線,並用硬編碼的數值,如更換:

SET TXN=518 

的循環工作和我得到的是已經改變了正確的文件所需的電子郵件,因此它必須圍繞TXN如何從SVN傳遞到批處理腳本。它可能不像我想的那樣充滿。

python腳本已被註釋掉,只是接受文件作爲命令行參數並將其發送給DL。這同樣適用於上面硬編碼的TXN值。顯然,我的循環阻止了成功完成提交,但不知道我做錯了什麼。但是我非常肯定它與上面提到的原因有關的TXN變量。

我的問題的任何幫助,將不勝感激:)

編輯*改變變量從%%到!因爲我正在使用enabledelayedexpansion *

回答

0

現在已解決 - 如果有人正在考慮此事以備將來參考,則問題是遞減SVN傳入的TXN變量。要獲取自上次提交以來發生的更改,我使用了不同的SVN命令,而不是diff命令。