Subversion使用哪種鉤子腳本?只是一般的想法,但代碼也會很棒!Subversion掛鉤的常見類型
回答
我認爲最常見的是讓人們在改編後改變修訂意見。
您需要啓用'pre-revprop-change'鉤子腳本才能允許。提供的示例(如果啓用)允許僅編輯註釋屬性,並且只能是原始的comitter。偉大的糾正錯別字。
在我的工作場所,我們設置了一個提交後掛鉤,可生成顯示在各種儀表盤中的RSS提要,供代碼審閱人員用來了解何時需要查看以及如何查看新的員工足夠承諾。
我正在使用post-commit掛鉤(I think it's this one)將消息發佈到Basecamp上的每個提交的論壇。優勢二:
作爲首席開發者,我得到每天早上(從大本營論壇通過RSS feed)的彙總提交的,可以看看我的團隊已經很快了達。
我們的Trac/SVN安裝在我們的防火牆後面,所以這給了我在其他位置的上游一個窗口,讓我們看到我們正在做的事情。他們可能不理解,但給經理有很多活動的樣子,好了,很多活動;)
我想這樣做的最終結果是類似於@Aviv在做什麼。
我正在研究在持續集成的單獨服務器上構建最新提交的解決方案,但是我將不得不改變我們在數據庫模式更改之前進行更改的方式。
掛鉤通知bug /問題管理系統存儲庫的更改。 IE瀏覽器。提交消息有問題:546或類似的標籤被解析並提供給bug管理系統。
我們檢查我們的鉤子腳本如下:
- 一個提交日誌信息已被供應
- 這審閱已爲提交
- 那沒有自動生成的代碼或禁止的文件中指定土地類型了在倉庫中
- 發送電子郵件了創建分支/標記時
我們仍然要執行下列規定:
- 當用戶獲取關於文件
- 鎖發送電子郵件時,您的鎖已被盜竊
- 當修改發送電子郵件給大家發送電子郵件財產已被更改
我們使用他們的幾件事情:
- 與bug跟蹤系統集成(Trac in our case - 提交消息,說「關閉#514」自動標誌着錯誤的封閉
- 與構建集成(buildbot in our case整合 - 提交到觀看分支觸發構建
- 預提交用於驗證commit鉤子 - 我們使用svnchecker。這驗證了我們的Python代碼爲PEP8 correctness
- 送籤郵件到郵件列表
- 運行壓痕腳本
我們使用提交掛鉤腳本觸發我們的發佈機器人。將新版本信息寫入我們不同產品中名爲changes.txt的文件將觸發創建標籤和相關工件。
我有一個使用Ruby Tinder庫的設置,我發送到一個篝火房間,如果有人想要我可以發佈或發送代碼給你的腳本。
我見過的其他常見類型是bug追蹤系統和電子郵件通知。
如果你有混合使用unix和Windows用戶的倉庫,我建議你使用預先提交鉤子腳本作爲預防措施。它可以防止難以分類的情況,其中svn updates fail for Windows users because of a file rename which only changed the case of the file name。相信我,這是一個很好的機會,它可以爲你節省麻煩。
這在前面的Subversion用戶郵件列表中已經討論過了。 This特別是有一些有用的想法。
我使用的是pre-revprop-change
掛鉤,使實際回去後提交已執行編輯的意見和這樣的信息。如果提交註釋中缺少錯誤信息,這非常有用。
在這裏,我發佈了一個pre-revprop-change.bat
批處理文件的Windows NT或更高版本...你 可以肯定,增加更多的修改。您也可以從中獲得一個 post-revprop-change.cmd
備份舊snv:log
某處,或只是將其追加爲新的日誌...
唯一棘手的部分是能夠真正從 批處理文件解析標準輸入。 ..這是通過FIND.EXE
命令完成的。
另一方面,這是我從其他用戶那裏收到關於使用/b
和exit
命令的問題的報告。如果錯誤情況表現不佳,您可能只需要在特定應用程序中刪除該/b
。
@ECHO OFF
set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set bIsEmpty=true
for /f "tokens=*" %%g in ('find /V ""') do (
set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log properties are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
謝謝,這非常有用。 – ziggy 2012-02-10 12:52:00
Windows預提交掛鉤來檢查日誌是否包含某些內容。
@ECHO OFF
setlocal
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set txn=%2
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set svnlookparam="%repos%" -t %txn%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
set bIsEmpty=true
for /f "tokens=* usebackq" %%g in (`svnlook log %svnlookparam%`) do (
set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
echo Allowed. >&2
goto :END
:ERROR_EMPTY
echo Empty log messages are not allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
:: You may require to remove the /b below if your hook is called directly by subversion
exit /b 1
:END
endlocal
post-commit掛鉤發送電子郵件通知,指出存儲庫中的某些內容已更改爲電子郵件列表。您在同一文件夾需要sendmail.exe比你的鉤子文件,用sendmail.ini一起。
您還需要旁邊的後commit.cmd文件後commit.tos.txt列出的郵件收件人。該文件應包含:
[email protected],[email protected],[email protected]
這裏是鉤代碼:
@ECHO OFF
setlocal
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set rev=%2
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set tos=%repos%\hooks\%~n0.tos.txt
set reposname=%~nx1
set svnlookparam="%repos%" --revision %rev%
if not exist "%tos%" goto :END
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare sendmail email file
set author=
for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
set author=%%g
)
for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
set EmailNotificationTo=%%g
)
set SendMailFile=%~n0_%reposname%_%rev%.sm
echo To: %EmailNotificationTo% >> "%SendMailFile%"
echo From: %reposname%[email protected] >> "%SendMailFile%"
echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification >> "%SendMailFile%"
echo --- log [%author%] --- >> "%SendMailFile%"
svnlook log %svnlookparam% >> "%SendMailFile%" 2>&1
echo --- changed --- >> "%SendMailFile%"
svnlook changed %svnlookparam% --copy-info >> "%SendMailFile%" 2>&1
echo .>> "%SendMailFile%"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Send email
type "%SendMailFile%" | "%~dp0sendmail.exe" -t
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Clean-up
if exist "%SendMailFile%" del "%SendMailFile%"
:END
endlocal
我忘了,同時承諾輸入註釋。沒有時間弄清楚爲什麼我的pre-revprop-change鉤子不工作。所以下面的svnadmin命令工作對我來說,進入一個提交信息: svnadmin setlog <filesystem path to my repository> --bypass-hooks -r 117 junk
, 其中「垃圾」是含有我想成爲註釋的文本文件。 svn setlog help
有更多使用信息...
對於那些誰正在尋找的pre-revprop-change.bat爲snvsync操作:
https://gist.github.com/1679659
@ECHO OFF
set user=%3
if /I '%user%'=='syncuser' goto ERROR_REV
exit 0
:ERROR_REV echo "Only the syncuser user may change revision properties" >&2
exit 1
它只是來自這裏:http://chestofbooks.com/computers/revision-control/subversion-svn/Repository-Replication-Reposadmin-Maint-Replication.html並且已經適用於Windows。
- 1. Subversion掛鉤問題
- 2. Subversion提交後掛鉤
- 3. Subversion失敗後提交掛鉤?
- 4. CruiseControl.NET不執行Subversion掛鉤腳本
- 5. Apache Subversion提交前掛鉤失敗
- 6. 掛鉤使Subversion只讀特定用戶
- 7. Subversion服務器端後提交掛鉤
- 8. 文件類型檢查SVN掛鉤
- 9. 掛鉤到類庫的「OnLoad」
- 10. 掛鉤或不掛鉤 - git
- 11. API無掛鉤掛鉤
- 12. 什麼鉤掛鉤創建自定義帖子類型?
- 13. Subversion中的鉤子
- 14. 模型掛鉤,this.store.find()失敗
- 15. 灰燼模型掛鉤({})
- 16. 掛鉤到sqlalchemy模型
- 17. .NET SOAP常見類型
- 18. 監視TFS服務掛鉤/ Web掛鉤
- 19. IAT掛鉤 - 無法掛鉤ExitProcess
- 20. SetParent掛鉤,你怎麼解除掛鉤?
- 21. 在掛鉤程序中訪問掛鉤
- 22. Subversion commit failed文件合併:200 OK提交後掛鉤
- 23. 魚眼中哪些class/jar文件掛鉤了subversion和GIT?
- 24. 爲所有存儲庫添加subversion提交掛鉤
- 25. Subversion掛鉤是否可以使用文件URL?
- 26. 是否可以在Subversion中創建自定義掛鉤事件
- 27. Subversion客戶端掛鉤不顯示回顯
- 28. 如何爲每個存儲庫生成Subversion掛鉤模板?
- 29. Subversion在大型提交時掛起
- 30. 搜索掛鉤無法正常工作
我不明白爲什麼這仍然是一個問題。對於特定的註冊表更改,Windows XP及更高版本可能會區分大小寫。它只是客戶端實用程序,例如不支持它的TortoiseSVN。這些客戶端svn實用程序安裝時,應該是安裝程序選項來設置此註冊表。 – TamusJRoyce 2011-07-27 14:20:45