試試這個:
腳本複製到另一個目錄中,並修改它使用-r
參數爲svnlook
命令,而不是-t
。然後,嘗試使用應該失敗的提交修訂。
例如:
$ cd $repo_dir/hooks
$ cp pre-commit $HOME
$ cd
$ vim pre-commit #Change from Transaction to Revision
$ # Revision #123 should have failed
$ ./pre-commit $repo $rev
如果腳本不會產生一個錯誤,你可以嘗試這樣的事情打印出引號的評論,看看它是否在零長度等。」將幫助您在腳本中找到可能的邏輯錯誤。
您還應該在Perl腳本中使用use strict;
和use warnings;
,因爲它很容易發現您可能未意識到自己在腳本中遇到的錯誤。很容易忘記一個特定的變量不一定被設置,或者你錯誤地輸入了一個變量。這些編譯指示將拿起這些類型的錯誤,這似乎引起的問題約90%在Perl:
#! /usr/bin/env perl
use strict;
use warnings;
my $svnlook = "/usr/bin/svnlook";
my $minchars = 10;
my $repos = $ARGV[0];
my $txn = $ARGV[1];
chomp (my $comment = qx($svnlook log -t $txn $repos));
if (not $comment) {
die "A comment is required!\n";
}
elsif (length $comment < $minchars) {
die "Comment must be at least $minchars characters.\n";
}
exit 0;
您也可以使用我的pre-commit腳本。它可以用來驗證提交評論的長度和結構。例如,您可能需要提交評論才能要求缺陷標識。它還允許您控制誰在存儲庫的哪些部分提交權限,並強制在某些文件上使用某些屬性。例如,您可能想要確保所有shell腳本和Perl腳本的svn:eol-style
設置爲native
或LF
。
它也可以允許用戶創建標籤,但不允許用戶在創建標籤後進行更改。這可以防止用戶意外檢查標籤,進行更改並提交。
而且,還有一兩件事:
在連續構建系統看看,如Jenkins。我發現的一件事是,僅僅通過連續構建,開發人員自然而然地改進了他們的提交消息,而沒有執行任何強制措施。
這是因爲提交消息現在很容易看到。詹金斯顯示了每個構建的變化,構建本身是否成功,測試結果等。它顯示了更改和提交註釋。突然間,提交的評論對開發者本身變得更加有用,而且他們只是做了更好的評論。
你可以看一個svn log
,看的時候,我實現詹金斯:之前有或者沒有提交意見,或爲「重新格式化代碼」還是非常有幫助的「所做的更改」這樣有用的東西(包括長於10個字符)。突然之間的評論是「修復了BUG-1233。它傳遞給foo方法」之前檢查空指針。
請出示腳本。另外,看看http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-repository-hooks.html – simbabque 2012-07-18 07:34:30
$ minchars = 10; $ svnlook ='/ usr/bin/svnlook'; #------------------------------ -------------- $ repos = $ ARGV [0]; $ txn = $ ARGV [1]; $ comment ='$ svnlook log -t「$ txn」「$回購「'; 格格($評語); 如果(長度($評論)== 0){ 打印STDERR 」需要一個評論「;! 出口(1);} elsif(長度($ comment)<$ minchars){ 打印STDERR「註釋必須至少爲$ minchars字符。 exit(1); } exit(0); – user1280241 2012-07-18 12:02:04
我運行這個腳本是subversion.it工作正常。但開發人員正在使用TSVN我怎麼能限制開發商沒有一個合適的提交。 – user1280241 2012-07-18 12:03:09