SVN исключить окончание файла перед расширением хука - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь написать хук, который блокирует коммит, если у него есть определенная строка.Я получил это, работая со следующим кодом.

#!/bin/sh

REPOS="$1"
TXN="$2"
COMPARE=`$SVNLOOK diff -t "$TXN" "$REPOS"`

if echo ${COMPARE} | grep -qw "path/to/file/*"; then
  if         echo ${COMPARE} | egrep "string1"; then
             echo "file contains invalid string string1. Unable to commit " 1>&2
            exit 1
  fi

  if         echo ${COMPARE} | egrep "string2"; then
             echo "file contains invalid string string2. Unable to commit " 1>&2
            exit 1
  fi

  if         echo ${COMPARE} | egrep "string3"; then
             echo "file contains invalid string string3. Unable to commit"  1>&2
            exit 1
  fi


fi

Теперь я пытаюсь исключить файлы, заканчивающиеся на «_man.txt».Я знаю, что вы должны использовать --exclude = * {_ man.txt}, но он не игнорирует файлы и все еще показывает сообщение об ошибке подтверждения, которое я настроил.Кто-нибудь может увидеть, чего мне не хватает и почему?

if echo ${COMPARE} | grep -qw --exclude=\*{_man.txt} "path/to/file/*"; then
  if         echo ${COMPARE} | egrep "string1"; then
             echo "file contains invalid string string1. Unable to commit " 1>&2
            exit 1
  fi

  if         echo ${COMPARE} | egrep "string2"; then
             echo "file contains invalid string string2. Unable to commit " 1>&2
            exit 1
  fi

  if         echo ${COMPARE} | egrep "string3"; then
             echo "file contains invalid string string3. Unable to commit"  1>&2
            exit 1
  fi


fi

1 Ответ

0 голосов
/ 07 июня 2018

Вот что я должен был сделать.

for ROUTE in $COMPARE
do
 if [[ "$ROUTE" == *path/to/file* ]]; then

    if [[ "$ROUTE" == *_man.txt* ]]; then
        exit 0
    fi

    if echo ${COMPARE} | grep -qw "path/to/file/*"; then
        if  echo ${COMPARE} | egrep "string1"; then
            echo "string1 cannot be found in file." 1>&2
            exit 1
        fi

        if  echo ${COMPARE} | egrep "string2"; then
            echo "string2 cannot be found in file." 1>&2
            exit 1
        fi

        if  echo ${COMPARE} | egrep "string3"; then
            echo "string3 cannot be found in file." 1>&2
            exit 1
        fi
    fi
fi
done
#Operation 001 Completed
...