SVN Edge 的 Pre-commit 挂钩错误
Errors on the Pre-commit hook of SVN Edge
美好的一天!我目前正在研究我公司现有的 SVN Edge 和 TortoiseSVN。我们从不使用预提交挂钩,在阅读了此处的所有问答后,我决定将提交消息的要求落实到位。
首先,我将 'pre-commit.tmpl' 重命名为 'pre-commit',然后将代码修改为以下内容,但我不断收到以下错误:
Error1:“/usr/bin/svnlook:未找到”(即 SVNLOOK 的值)
错误2:"If you want to break the lock, use the 'Check For Modifications' dialog or the repository browser."
SVNLOOK 的值应该是多少?或者我需要修改哪一行。
请帮助我缺少什么......我真的很困惑,我不是开发人员。
非常感谢!!!
第一次尝试(SVN Edge 原创):
REPOS=""
TXN=""
# 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
#!/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);
错误 1:
是的,svnlook
是一个文件。任何 bash 程序都是一个文件,可以在您的 $PATH
中的一个目录中找到(抱歉,如果这听起来非常多余,因为您已经知道了)。
最重要的 'system scripts' 可在 /bin
中找到,应用程序脚本可在 /usr/bin
中找到。
这意味着如果您的 svnlook
安装在不同的目录中,您可能需要寻找它。
如果您是 运行 Windows,则需要提供可执行文件的路径。
错误 2:
This 可能对你有帮助。
美好的一天!我目前正在研究我公司现有的 SVN Edge 和 TortoiseSVN。我们从不使用预提交挂钩,在阅读了此处的所有问答后,我决定将提交消息的要求落实到位。 首先,我将 'pre-commit.tmpl' 重命名为 'pre-commit',然后将代码修改为以下内容,但我不断收到以下错误:
Error1:“/usr/bin/svnlook:未找到”(即 SVNLOOK 的值)
错误2:"If you want to break the lock, use the 'Check For Modifications' dialog or the repository browser."
SVNLOOK 的值应该是多少?或者我需要修改哪一行。 请帮助我缺少什么......我真的很困惑,我不是开发人员。 非常感谢!!!
第一次尝试(SVN Edge 原创):
REPOS=""
TXN=""
# 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
#!/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);
错误 1:
是的,svnlook
是一个文件。任何 bash 程序都是一个文件,可以在您的 $PATH
中的一个目录中找到(抱歉,如果这听起来非常多余,因为您已经知道了)。
最重要的 'system scripts' 可在 /bin
中找到,应用程序脚本可在 /usr/bin
中找到。
这意味着如果您的 svnlook
安装在不同的目录中,您可能需要寻找它。
如果您是 运行 Windows,则需要提供可执行文件的路径。
错误 2:
This 可能对你有帮助。