簡體   English   中英

批處理腳本循環遍歷SVN更改的文件

[英]Batch Script to Loop through SVN changed files

因此,我有一個提交后鈎子,它會觸發我們的Jenkins服務器上的構建。 一切正常,除非我嘗試遍歷SVN存儲庫中更改的文件。 問題是提交實際上掛起,如果我在循環中注釋掉更改的文件,則該提交成功完成。

我用google搜索了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!
)

其中“ repo URL”是我在其中進行硬編碼的SVN中的根存儲庫,這很好。 現在,例如,如果我注釋掉SET TXN行並將其替換為硬編碼數字值,例如:

SET TXN=518

循環正常進行,我收到了所需的電子郵件,其中包含已更改的正確文件,因此必須圍繞TXN如何從SVN傳遞到批處理腳本中。 我認為可能不是人口眾多。

python腳本被注釋掉,僅接受該文件作為命令行參數並將其通過電子郵件發送給DL。 這同樣適用於上述硬編碼的TXN值。 顯然,我的循環阻止了提交成功完成,但是不確定我在做什么錯。 但由於上述原因,我很確定它與TXN變量有關。

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

編輯*將變量從%%更改為!! 因為我正在使用enabledelayedexpansion *

現在,此問題已得到解決-如果有人在尋找該參考以供將來參考,則該問題將使SVN傳遞的TXN變量遞減。為了獲得自上次提交以來所做的更改,我使用了另一個SVN命令而不是diff命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM