2009-12-18 14 views
6

我經常看到一些提交,但沒有引用票據的票據......所以我最終回去手動檢查差異。不一定是壞的,但有筆記會很高興。有任何想法嗎?我可以如何強迫我們的開發人員在通過TortoiseSVN提交時輸入筆記?

+1

即使需要筆記,您仍可能遇到問題。許多人最終放入「更新」或類似的東西。如果你還沒有,那麼向所有開發人員解釋這些評論如何能夠長期發揮作用是值得的。例如從現在起能夠看到一年的變化動機。 – Shaun 2009-12-18 20:16:09

+0

另請參見[爲Tortoise SVN創建必需的註釋鉤子](http://stackoverflow.com/questions/1208900/creating-a-必需的註釋 - 掛鉤 - for -tortoise-svn)。 – 2015-06-01 14:02:11

回答

2

當然,但你將如何執行非亂碼,有意義和背景化的提交消息?

當你注意到一個跛腳/空洞的提交時,更好地衝你的不負責任的同事。或者口頭相當於一拳。只要確保他們感覺不好,這是應得的。

+2

的確,預先提交的腳本不會阻止人們在框中鍵入「更新的項目」,但我已經看到提交消息在執行後從90%的空到90%的合理消息。如果您有預先提交的腳本,您必須少做點事。 – 2009-05-05 07:45:35

+1

爲了達到此目的,Cattleprods訂購。 – 2009-05-05 08:12:00

5

您可以定義一個預先提交掛鉤腳本,拒絕所有提交空白或太短的日誌消息。

這是關於如何做到的post

1

我已經使用了預提交鉤子腳本來確保提交註釋始終引用問題跟蹤系統中的問題編號。例如,評論如

fixes frobulator when the moon is full (bug 1234)

將被接受,因爲它包含一個錯誤號。即使採用這種安排,您仍然必須相信開發人員才能插入有意義的評論和錯誤編號。

+0

1.6現在包含reg-ex的bug編號匹配,如果沒有發現bug數(可以拒絕,但比沒有更好),可以發出警告。 – 2009-05-05 08:13:18

1

我們的預提交hookscript(Windows批處理):

@echo off & setlocal ENABLEEXTENSIONS 

set SVNLOOK="E:\Subversion\Program\Subversion 1.5.0\bin\svnlook.exe" 

set REPOS=%1% 
set TXN=%2% 
set LOGFILE=%REPOS%\hooks\log-%TXN%.txt 
set GREP=E:\UnxUtils\usr\local\wbin\grep.exe 

%SVNLOOK% log -t "%TXN%" "%REPOS%" >%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 

if not defined first (echo "Please supply a commit comment" >&2 & exit 1) 





REM Check for invalid windows characters in the path 
echo Checking >%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "\" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find ":" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "*" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "?" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find """" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^>" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^<" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^|" >>%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 

if defined first (echo "Please do not use filename characters which are invalid in windows. - Found %first%" >&2 & exit 1) 






REM Tagblock - prevent changes to tag directories 
echo Checking >%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | %GREP% "^U.*\/tags\/.*" | %GREP% -v -f "%REPOS%\conf\tag-block-exceptions.txt" >>%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 


if defined first ( 
    echo "%first% -- Error: Modifications to tag directories are blocked. To allow these modifications add the path to %REPOS%\conf\tag-block-exceptions.txt" >&2 
    exit 1) 
6

不TortoiseSVN的,但Subversion本身 - 在服務器上設置。您可以設置一個強制執行提交評論的預提交掛鉤。如果你想更進一步,還有一些預先提交的鉤子可以驗證是否存在對像Jira這樣的問題跟蹤系統的引用。

+3

TortoiseSVN具有tsvn:logminsize屬性。如果您將該屬性設置爲10,那麼OK按鈕將保持禁用狀態,直到輸入至少10個字符作爲提交消息。 – Stefan 2009-12-22 14:28:13

+0

斯蒂芬的建議+1。我已經使用了pre-commit鉤子了一段時間,但是這會避免開發人員抱怨他們只有在所有更改發送到服務器後纔看到提交失敗消息。 – Michael12345 2013-12-11 02:48:52

0

TortoiseSVN是客戶端,您可能需要force comments on the subversion server。 或者你可以告訴他們評論他們的提交。

+0

這是我在創建腳本時最初加入書籤的鏈接,我唯一遇到的問題是它需要調用函數的直接路徑。 – Nate 2009-12-18 19:59:19

3

您需要使用一個預先提交的鉤子,這是一個服務器設置,我已經爲VisualSVN編寫了一個基本上是批處理文件的鉤子 - 類似的腳本可用於基於非Windows的SVN服務器。

@echo off 
:: 
:: Stops commits that have empty log messages. 
:: 
@echo off 
setlocal 

rem Subversion sends through the path to the repository and transaction id 
set REPOS=%1 
set TXN=%2 

rem check for an empty log message 
call "C:\program files\visualsvn server\bin\svnlook" log %REPOS% -t %TXN% | findstr . > nul 
if %errorlevel% gtr 0 (goto err) else exit 0 

:err 
echo. 1>&2 
echo Your commit has been blocked because you didn't give any log message 1>&2 
echo Please write a log message describing the purpose of your changes and 1>&2 
echo then try committing again. -- Thank you 1>&2 
exit 1 
1

可以強制提交評論很輕鬆了,但你最終得到的是一百萬提交該說「調試」或「測試」。

如果您的開發人員看不到添加提交消息時強制他們鍵入的值不會改變這一點。

更糟糕的是,當Eclipse用戶將SVN/CVS集成到一起時,它會記住它們的最後一次提交消息 - 並且它們最終提交了一個完全不相關的文件,其中包含來自上一個任務/項目的消息。

相關問題