Реализация и тестирование хука Subversion

Реализация и тестирование хука Subversion

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

Для справки я просмотрел, выполнил и затем попытался объединить методы по следующим ссылкам:
1.Руководство Subversion по настройке каталога
2.Руководство Tortoisevn для скриптов хуков на стороне сервера
3.Объяснение хуков на стороне сервера, содержащее ссылку на руководство Subversion
4.Учебник по выравниванию по слову для хуков перед фиксацией
5.Ответ на ошибку сервера для решения проблем с коммит-хуками

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

Моя среда
На моей машине установлена ​​RHEL6 (Cent OS).
Subversion находится на удаленной машине, к которой я не могу получить прямой доступ без разрешения моего руководителя. На
удаленной машине установлена ​​Subversion 1.6.

Вот текущая структура моего репозитория:

test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk  

Файл pre-commit временно имеет права доступа 777. Все каталоги имеют права доступа 775.

Это пример скрипта, который я создал для тестирования хука коммита:

#!/usr/bin/env bash

echo "THOU SHALL NOT PASS" 1>&2

exit 1

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

Вопросы
1. Есть ли что-то, что я упустил или не заметил при реализации хуков?
2. Если я реализую хук таким образом, нужно ли мне беспокоиться о повторной реализации того же хука в Tortoisesvn?

Мы будем очень признательны за любые отзывы и/или предложения.

решение1

  1. Есть ли что-то, что я упустил или не учел при реализации хуков?

Не используйте разрешение 777. Иногда это может быть контрпродуктивным. Некоторые инструменты могут не работать с такими подозрительными разрешениями. В вашем случае это вряд ли будет проблемой, потому что у меня это работает с этой настройкой. Но просто не делайте этого. Измените его на 755.

Еще одна проверка работоспособности — запуск скрипта-хука непосредственно на сервере:

/path/to/test-for-svn-hooks/hooks/pre-commit

Если ваш скрипт имеет более содержательное содержание, то вам следует также протестировать его с соответствующими параметрами, например:

/path/to/test-for-svn-hooks/hooks/pre-commit /path/to/test-for-svn-hooks TXN

Далее протестируйте его, используя проверку на самом сервере, например:

svn co /path/to/test-for-svn-hooks /tmp/test1
cd /tmp/test1
date > date.txt
svn add date.txt
svn ci -m 'added some junk'

Исходя из того, что вы написали в своем посте, эти шаги должны сработать. Я не знаю подробностей условий, при которых ваши тесты терпят неудачу. Если вы сможете дойти до этой точки, то, возможно, вы увидите причину ваших неудачных тестов.

  1. Если я реализую хук таким образом, нужно ли мне беспокоиться о повторной реализации того же хука в Tortoisesvn?

Нет. Хуки определяются на стороне сервера. Не нужно ничего делать на стороне клиента. Все клиенты будут подчиняться правилам, которые вы определяете в хуке pre-commit.

Связанный контент