Хук предварительной фиксации SVN "svnlook: E000002: Невозможно открыть файл 'foo / format': такого файла или каталога нет" - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу добавить хук предварительной фиксации Subversion и отклонить коммит, который содержит определенный текст, например // IDE-generated stub комментарии Eclipse.

Я использую svnlook (из Subversion 1.11.0):

~> svnlook --version
svnlook, version 1.11.0 (r1845130)
   compiled Dec  9 2018, 17:34:43 on x86_64-apple-darwin17.7.0

Мой хук перед фиксацией - это простой bash-скрипт:

#!/bin/bash

REPOS="$1"
TXN="$2"

set -ue
bad="// IDE-generated stub"
while read file
do
#    found=$(svnlook cat --transaction "$TXN" "$REPOS" "$file" | grep "$bad")
    found=$(svnlook diff --transaction "$TXN" "$file" | grep "$bad")
    if [ -n "$found" ]
    then
        echo "Found $bad in $file" >&2
        exit 1
    fi
done < <(svnlook changed --transaction "$TXN" "$REPOS" | cut -c 4-)
exit 0

Когда я пытаюсь что-то зафиксировать, я получаю следующую ошибку о том, что foo/format не существует.MCVE ниже:

~> svnadmin create repository
~> svn co file://$PWD/repository wc
Checked out revision 0.
~> echo foo > wc/foo
~> svn add wc/foo
A         wc/foo
~> svn ci wc/foo -m "initial version"
Adding         wc/foo
Transmitting file data .done
Committing transaction...
Committed revision 1.
~> cp ~/pre-commit repository/hooks/pre-commit
~> chmod 755 repository/hooks/pre-commit
~> echo whatever >> wc/foo
~> svn ci wc/foo -m "next one"
Sending        wc/foo
Transmitting file data .done
Committing transaction...
svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:
svnlook: E000002: Can't open file 'foo/format': No such file or directory

Обратите внимание, что приведенный выше код работает более или менее, когда я использую закомментированную версию svnlook cat, но тогда он также будет запускаться для любого ключевого слова, найденного в уже зафиксированном коде, а не тольков текущих изменениях.

Я видел этот вопрос , но он, кажется, около svnlook log и имеет другой код ошибки.

Почему я получаю эту ошибку икак я могу это исправить?

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