簡體   English   中英

Windows Server上的svn post-commit掛鈎

[英]svn post-commit hook on windows server

我正在嘗試在Windows服務器上設置svn提交后鈎子,以便每次進行提交時,它都與我的錯誤跟蹤網站上的現有項目相關。

由於沒有針對Windows的預制的提交后鈎子(或者至少我沒有找到適合我的需求的鈎子),因此我嘗試為自己編寫批處理文件。

SET REPOS=%1
SET REV=%2
SET SVNLOOK="C:\Program Files (x86)\VisualSVN Server\bin\svnlook.exe"
SET PROJECT=3

%SVNLOOK% log -r %REV% "%REPOS%" > COMMIT_MSG
SET /p COMMIT_MSG= < COMMIT_MSG
echo %COMMIT_MSG%

C:\curl\bin\curl "http://www.mybugtrackingsite.de/vcs_integration/report/%PROJECT%/?passkey=KEY" --data-urlencode "msg=%COMMIT_MSG%"

當我自己設置REPOS和REV並從命令行運行腳本時,它可以工作,但是當我進行提交時,它不起作用,並且我的COMMIT_MSG僅包含“ echo is on”,而不是實際消息。

我已經讀過,svn存儲庫在空環境下執行鈎子程序,這意味着根本沒有設置任何環境變量,這可能就是為什么我的腳本可以手動運行而不是由svn運行的原因。

但是我必須設置哪些變量?如何設置? 我的路徑已經是絕對的,所以這不應該成為問題。 我不是Windows專家,也沒有真正進入批處理范圍-因此,對於我如何使這件事情起作用的任何幫助或想法,我們將不勝感激!

您正在將REPOSREV都設置為%1 其中之一應為%2

您還應該在文件頂部放置@ECHO OFF以避免屏幕上不必要的輸出

當您將提交消息重定向到文件時,使用相對路徑“ COMMIT_MESSAGE”。

%SVNLOOK% log -r %REV% "%REPOS%" > COMMIT_MSG

svn鈎子使用的工作目錄可能與您的目錄不同,並且svn進程無權在此位置寫入。 您可以使用絕對路徑。

您也可以嘗試重定向STDERR,以查看是否從svnlook收到錯誤。

還要在掛鈎腳本的開頭刪除該文件,以確保您不使用上一次運行的文件。

暫無
暫無

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

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