SVN Edge预提交钩子的错误

时间:2016-03-11 02:04:29

标签: svn tortoisesvn collabnet

美好的一天!我目前正在研究我公司现有的SVN Edge和TortoiseSVN。我们从不使用预提交钩子,在阅读所有Q& A时,我决定将提交消息的要求放在适当的位置。 首先,我重命名了'pre-commit.tmpl'预先提交'然后将代码修改为以下内容,但我不断收到以下错误:

错误1:" / usr / bin / svnlook:找不到" (即SVNLOOK的价值)

错误2:"如果您想打破锁定,请使用'检查修改'对话框或存储库浏览器。"

SVNLOOK的价值应该是多少?或者我需要修改哪一行。 请帮助我,我错过了...我真的很困惑,我不是开发人员。 非常感谢!!!

第一次尝试(SVN Edge原创):

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);

第3次尝试(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 个答案:

答案 0 :(得分:1)

错误1:
是的,svnlook是一个文件。任何bash程序都是一个文件,可以在$PATH的其中一个目录中找到(很抱歉,如果这听起来非常冗余,因为你已经知道了)。
最基本的系统脚本&#39;可在/bin中找到,应用程序脚本位于/usr/bin 这意味着如果您的svnlook安装在不同的目录中,您可能需要查找它 如果您运行的是Windows,则需要提供可执行文件的路径 错误2:
This可能会对您有所帮助。