POST-COMMIT SCRIPT в SVN для проверки журнала коммитов на PRODUCT-ID с помощью сценария оболочки - PullRequest
1 голос
/ 01 марта 2011

Я новичок в Linux, а также в Subversion. У меня была задача проверить синтаксис сообщения коммита, содержащего идентификатор продукта. Если его нет, я передаю пользователю сообщение о неверном формате, используя SHELL SCRIPT.
Ниже приведены шаги, которые я выполнил после большого поиска в Google, Для крючка PRE-COMMIT код:

#!/bin/sh  
set -e  
/PATH-TO-REPOSITORY/hooks/CommentSyntax.sh "$1" "$2"  

Мой сценарий CommentSyntax.sh,

#!/bin/sh  
REPOS="$1"  
TXN="$2"  
SVNLOOK=/usr/bin/svnlook  
regex="PRODUCT-[0-9]*"  
if [ `"$SVNLOOK" log -t "$TXN" "$REPOS"` =~ ${regex} ]; then  
    exit 0  
else  
  echo "" 1>&2    
  echo "Please make your commit comment start with PRODUCT-XXX" 1>&2  
  exit 1  
fi

Всякий раз, когда я пытаюсь зарегистрировать код, я получаю сообщение об ошибке ниже,

srikanth:~/testing$ svn ci -m "PRODUCT-123"
Sending        two.java
Transmitting file data .svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
[: 22: PRODUCT-123: unexpected operator

Please make your commit comment start with PRODUCT-XXX

Я не уверен, где я ошибся. Запросите ваш ценный совет по этому же вопросу.

1 Ответ

0 голосов
/ 01 марта 2011

Команда тестирования не знает оператора =~. Relpace

if [ `"$SVNLOOK" log -t "$TXN" "$REPOS"` =~ ${regex} ]; then  

строка

if "$SVNLOOK" log -t "$TXN" "$REPOS" | head -n1 | grep -q '^PRODUCT-[0-9][0-9]*' ; then

head -n1 выберите первую строку коммита, grep проверяет регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...