2008-08-08 51 views

回答

0

我認爲最常見的是讓人們在改編後改變修訂意見。

您需要啓用'pre-revprop-change'鉤子腳本才能允許。提供的示例(如果啓用)允許僅編輯註釋屬性,並且只能是原始的comitter。偉大的糾正錯別字。

3

在我的工作場所,我們設置了一個提交後掛鉤,可生成顯示在各種儀表盤中的RSS提要,供代碼審閱人員用來了解何時需要查看以及如何查看新的員工足夠承諾。

1

我正在使用post-commit掛鉤(I think it's this one)將消息發佈到Basecamp上的每個提交的論壇。優勢二:

  1. 作爲首席開發者,我得到每天早上(從大本營論壇通過RSS feed)的彙總提交的,可以看看我的團隊已經很快了達。

  2. 我們的Trac/SVN安裝在我們的防火牆後面,所以這給了我在其他位置的上游一個窗口,讓我們看到我們正在做的事情。他們可能不理解,但給經理有很多活動的樣子,好了,很多活動;)

我想這樣做的最終結果是類似於@Aviv在做什麼。

我正在研究在持續集成的單獨服務器上構建最新提交的解決方案,但是我將不得不改變我們在數據庫模式更改之前進行更改的方式。

0

掛鉤通知bug /問題管理系統存儲庫的更改。 IE瀏覽器。提交消息有問題:546或類似的標籤被解析並提供給bug管理系統。

0

我們檢查我們的鉤子腳本如下:

  • 一個提交日誌信息已被供應
  • 這審閱已爲提交
  • 那沒有自動生成的代碼或禁止的文件中指定土地類型了在倉庫中
  • 發送電子郵件了創建分支/標記時

我們仍然要執行下列規定:

  • 當用戶獲取關於文件
  • 鎖發送電子郵件時,您的鎖已被盜竊
  • 當修改發送電子郵件給大家發送電子郵件財產已被更改
3

我們使用他們的幾件事情:

  • 與bug跟蹤系統集成(Trac in our case - 提交消息,說「關閉#514」自動標誌着錯誤的封閉
  • 與構建集成(buildbot in our case整合 - 提交到觀看分支觸發構建
  • 預提交用於驗證commit鉤子 - 我們使用svnchecker。這驗證了我們的Python代碼爲PEP8 correctness
  • 送籤郵件到郵件列表
  • 運行壓痕腳本
4

我們使用FogBugz的錯誤跟蹤,它提供了顛覆提交腳本,可包括在一個案例號您在檢查註釋,然後將錯誤與檢查中的錯誤相關聯。它確實需要設置一個WebSVN實例,以便爲您的存儲庫提供基於Web的查看器。

0

我們使用提交掛鉤腳本觸發我們的發佈機器人。將新版本信息寫入我們不同產品中名爲changes.txt的文件將觸發創建標籤和相關工件。

0

我有一個使用Ruby Tinder庫的設置,我發送到一個篝火房間,如果有人想要我可以發佈或發送代碼給你的腳本。

我見過的其他常見類型是bug追蹤系統和電子郵件通知。

7

如果你有混合使用unix和Windows用戶的倉庫,我建議你使用預先提交鉤子腳本作爲預防措施。它可以防止難以分類的情況,其中svn updates fail for Windows users because of a file rename which only changed the case of the file name。相信我,這是一個很好的機會,它可以爲你節省麻煩。

+0

我不明白爲什麼這仍然是一個問題。對於特定的註冊表更改,Windows XP及更高版本可能會區分大小寫。它只是客戶端實用程序,例如不支持它的TortoiseSVN。這些客戶端svn實用程序安裝時,應該是安裝程序選項來設置此註冊表。 – TamusJRoyce 2011-07-27 14:20:45

1

這在前面的Subversion用戶郵件列表中已經討論過了。 This特別是有一些有用的想法。

60

我使用的是pre-revprop-change掛鉤,使實際回去後提交已執行編輯的意見和這樣的信息。如果提交註釋中缺少錯誤信息,這非常有用。

在這裏,我發佈了一個pre-revprop-change.bat批處理文件的Windows NT或更高版本...你 可以肯定,增加更多的修改。您也可以從中獲得一個 post-revprop-change.cmd備份舊snv:log某處,或只是將其追加爲新的日誌...

唯一棘手的部分是能夠真正從 批處理文件解析標準輸入。 ..這是通過FIND.EXE命令完成的。

另一方面,這是我從其他用戶那裏收到關於使用/bexit命令的問題的報告。如果錯誤情況表現不佳,您可能只需要在特定應用程序中刪除該/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 
+0

謝謝,這非常有用。 – ziggy 2012-02-10 12:52:00

0

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 
1

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 
0

我忘了,同時承諾輸入註釋。沒有時間弄清楚爲什麼我的pre-revprop-change鉤子不工作。所以下面的svnadmin命令工作對我來說,進入一個提交信息: svnadmin setlog <filesystem path to my repository> --bypass-hooks -r 117 junk, 其中「垃圾」是含有我想成爲註釋的文本文件。 svn setlog help有更多使用信息...