需要與svn post-commit
批處理腳本一點幫助。在這裏我有什麼:SVN後執行批處理腳本行爲不同於正常執行
後commit.bat:
1. @ECHO OFF
2. cd D:\Subversion\...\hooks
3. SET OUTPUT = default
4. FOR /F "tokens=*" %%a in ('revision.bat') do (SET OUTPUT=%%a)
5. findstr /m "Autobuild" D:\Subversion\...\db\revprops\0\%OUTPUT%
6. if %errorlevel%==0 (
7. call website.bat
8.)
website.bat:
D:\Subversion\...\hooks\wget http://website.com/service-trigger
revision.bat:
svnlook youngest D:\Subversion\...
因此,這裏發生了什麼是
承諾庫後,腳本提取最後
revision
數使用該號碼找到在修訂日誌文件
嘗試在該日誌中找到一個特定的字符串
如果特定字符串存在,則激發一些URL
我的問題是,這個腳本是直接從cmd調用時執行的,但是當SVN調用它時,似乎奇怪的發生在第5行,因爲我沒有收到任何錯誤,但是第7行從來沒有被調用過。
我猜想,也許我應該運行腳本作爲管理員,但因爲我從來沒有認真地編程,適用於Windows,我不知道,我需要一些幫助
好吧,如果這一切都是真的(我將能夠測試幾個小時後),那麼爲什麼我設法直接運行此腳本?附: '......'省略了部分 –
它可能與您的起始目錄有關。 'cd'命令改變'D:'上的'CURRENT'目錄 - 它不會改變你記錄的(或當前的)驅動器,所以你可能會得到不同的結果,這取決於你當前的目錄是什麼。 「output」是否設置取決於當前目錄中的「revision.bat」的存在。如果它確實存在,然後使用您發佈的數據,你的'findstr'將被解析爲'FINDSTR/M 「自動構建」 d:\顛覆\ ... \ DB \的revprops \ 0 \ svnlook的最年輕的d:\顛覆\ .. 。' - 這可能不是你想要的。 – Magoo
你的意思是說,如果我有兩個驅動器,C,D,那麼如果當前正在驅動器C上運行'cd D:\ Subversion \ ... \ hooks',然後調用例如'revision.bat'這是在D,而我仍然在C,那麼它將無法正常工作(我btw意識到這一點)。所以你建議在#2後面的某處我應該叫'D:'?我真的想過,但沒有嘗試 –