Не удалось подключиться к репозиторию SVN

Я написал хук перед фиксацией, который проверяет, обновлен ли файл транка version.txt по сравнению с version.txt в теге. Когда я запускаю скрипт в консоли, все в порядке, но когда я пытаюсь зафиксировать, я получаю это

Authentication realm: http://localhost:80 Subversion Repository Password for 'www-data': svn: E070014: Unable to connect to a repository at URL 'http://localhost/svn/myrepo2/tags'

А также это, если --force-interactive выключен

svn: E215004: Authentication failed and interactive prompting is disabled; see the --force-interactive option

Я проверил все шаг за шагом, и похоже, что эта строка вызывает проблему:

tag=$(svn list /some/path/tags --force-interactive | sort -n | tail -n 1 )

Есть ли альтернатива svn ls для проверки последнего тега или файлов в тегах папок?

#!/bin/bash  

#get latest tag
tag=$(svn ls  /some/path/tags --force-interactive | sort -n |  tail -n 1)

#get content of file from the latest tag
fileFromTag=$(svn cat /some/path/tags/$tag/version.txt)

#get content of file from trunk
file=$(svn cat some/path/trunk/version.txt)

#compare current file with file from latest tag
if [ "$fileFromTag" == "$file" ]
then
    echo "Update version.txt" 
    exit 1
fi

А вот структура репозитория

 tags/
  1.1.0/
   version.txt
  1.1.3/
   version.txt
  1.1.5/
   version.txt
  1.1.6/
   version.txt
  1.2.0/
   version.txt
  rel_1.0/
   version.txt
 trunk/
   version.txt

🤔 А знаете ли вы, что...
Bash позволяет использовать условные операторы, циклы и функции в скриптах.


1
911
1

Ответ:

Решено

Ошибка означает, что клиент svn не проходит аутентификацию на сервере и нет кэшированных учетных данных. Но главная проблема — это команды, которые вы запускаете в своем хуковом скрипте:

  • Рассмотрите возможность перехода с svn клиента командной строки на svnlook.
  • Если по какой-то причине вам нужно использовать svn клиент командной строки в хуках, используйте URL-адреса file:// вместо URL-адресов HTTP (S). Хук запускается локально на том же компьютере, что и ваши репозитории и сервер, поэтому имеет смысл обращаться к репозиториям напрямую.