Ошибки на крюке Pre-commit SVN Edge
Добрый день! В настоящее время я работаю над существующими SVN Edge и TortoiseSVN моей компании. Мы никогда не используем хук pre-commit, и после прочтения всех вопросов и ответов здесь я решил ввести требование для сообщения коммита. Сначала я переименовал pre-commit.tmpl в pre-commit, затем изменил код следующим образом, но постоянно получаю следующие ошибки:
Ошибка 1:"/usr/bin/svnlook: not found" (т. Е. Значение SVNLOOK)
Ошибка 2:"Если вы хотите снять блокировку, используйте диалоговое окно" Проверка изменений "или браузер хранилища".
Какой должна быть ценность SVNLOOK? Или какую строку мне нужно изменить. Пожалуйста, помогите мне, что мне не хватает... Я действительно запутался, и я не разработчик. Большое спасибо!!!
1-я попытка (оригинал 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
2-я попытка ( 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 ответ
Ошибка 1:
Да, svnlook
это файл Любая программа bash - это файл, найденный в одной из директорий вашего $PATH
(Извините, если это звучит ужасно излишне, потому что вы уже это знали).
Наиболее важные "системные скрипты" находятся в /bin
и сценарии приложения находятся в /usr/bin
,
Это означает, что если ваш svnlook
установлен в другом каталоге, возможно, вам придется искать его.
Если вы работаете в Windows, вам нужно будет указать путь к исполняемому файлу.
Ошибка 2:
Это может помочь вам.