2016-03-11 174 views
0

美好的一天!我目前正在研究我公司的現有SVN Edge和TortoiseSVN。我們從來沒有使用預先提交的鉤子,並且在讀完所有的Q後,我決定放置提交消息的需求。 首先,我將'pre-commit.tmpl'重命名爲'pre-commit',然後將代碼修改爲以下內容,但我不斷收到以下錯誤:SVN Edge預掛鉤錯誤

Error1:「/ usr/bin/svnlook:not找到「(即SVNLOOK的值)

錯誤2:」如果您想中斷鎖定,請使用'檢查修改'對話框或存儲庫瀏覽器。「

SVNLOOK的價值應該是什麼?或者我需要修改哪一行。 請幫我看看我錯過了什麼......我真的很困惑,我不是開發者。 非常感謝!

第一嘗試(SVN邊緣原始):

REPOS="$1" 
TXN="$2" 

# Make sure that the log message contains some text. 
SVNLOOK=/opt/CollabNet_Subversion/bin/svnlook 
$SVNLOOK log -t "$TXN" "$REPOS" | \ 
    grep "[a-zA-Z0-9]" > /dev/null || exit 1 

# Check that the author of this commit has the rights to perform 
# the commit on the files and directories being modified. 
commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1 

# All checks passed, so allow the commit. 
exit 0 

第二嘗試(http://www.wandisco.com/svnforum/forum/opensource-subversion-forums/scripts-contributions/9015-pre-commit-comment-hook-script):

#!/usr/bin/perl 

# config section 
$minchars = 5; 
$svnlook = '/usr/bin/svnlook'; 

#-------------------------------------------- 
$repos = $ARGV[0]; 
$txn = $ARGV[1]; 
$comment = `$svnlook log -t "$txn" "$repos" | grep "[A-Z][A-Z][A-Z]-*"`; 
chomp($comment); 

if (length($comment) == 0) { 
print STDERR "Your commit has been blocked as you did not input a Product reference id. Please input an id in the form of ABC-123!"; 
exit(1); 
} 
elsif (length($comment) < $minchars) { 
print STDERR "Comment must be at least $minchars characters."; 
exit(1); 
} 

exit(0); 

第三嘗試(http://www.stillnetstudios.com/require-subversion-comments-minimum/):

#!/usr/bin/perl 

# config section 
$minchars = 4; 
$svnlook = '/usr/bin/svnlook'; 

#-------------------------------------------- 
$repos = $ARGV[0]; 
$txn = $ARGV[1]; 
$comment = `$svnlook log -t "$txn" "$repos"`; 
chomp($comment); 

if (length($comment) == 0) { 
    print STDERR "A comment is required!"; 
    exit(1); 
    } 
elsif (length($comment) < $minchars) { 
    print STDERR "Comment must be at least $minchars characters."; 
    exit(1); 
    } 

exit(0); 
+0

我不知道你的svnlook可能在哪裏......你可以嘗試'find/usr | grep「svnlook」'找到路徑。 – Majora320

+0

SVNLOOK是一個文件?那麼,我需要找到它的位置在哪裏?......謝謝Majora! – nova

回答

1

錯誤1:
是的,svnlook是一個文件。任何bash程序都是一個文件,在您的$PATH中的其中一個目錄中找到(對不起,如果這聽起來太可怕了,因爲你已經知道了)。
在「/bin」中找到最基本的「系統腳本」,在/usr/bin中找到應用程序腳本。
這意味着如果您的svnlook安裝在不同的目錄中,則可能需要查找它。
如果您正在運行Windows,則需要提供可執行文件的路徑。
錯誤2:
This可能會幫助你。

+1

好極了,根本不需要保證,因爲我需要非常基本的信息。肯定會回到你的結果。 – nova

+1

回到Error2,我的工作拷貝文件都沒有被鎖定。 – nova

+1

對於Error1,我在本地發現了svnlook.exe。我正在查看正確的文件嗎?或者它應該是一個服務器文件? – nova