Задний план
Я пытаюсь реализовать несколько приемов фиксации для Subversion. Я провел много исследований, чтобы попытаться заставить простой тестовый крючок работать, но мне не повезло.
Для справки я просмотрел, следил, а затем попытался объединить методы из следующих ссылок:
1. Руководство по Subversion для настройки каталогов
2. Руководство Tortoisevn по скриптам ловушек на стороне сервера
3. Объяснение обработчиков на стороне сервера, которое содержит ссылку на руководство по Subversion
4. Учебник с выравниванием по словам для хуков перед фиксацией
5. Ответ serverfault для проблем с фиксациями
Есть также ряд других сайтов, на которые я ссылался и которые я использовал, но я все еще не могу заставить работать крючки фиксации.
Моя среда
Моя машина работает под управлением RHEL6 (Cent OS).
Подрывная версия находится на удаленном компьютере, к которому я не могу получить доступ напрямую без разрешения моего руководителя.
На удаленной машине работает Subversion 1.6.
Это текущая структура моего репозитория:
test-for-svn-hooks
|-branches
|-hooks
| +-pre-commit
|-tags
+-trunk
Для файла предварительной фиксации временно установлены разрешения 777
. Все каталоги имеют права доступа 775
.
Это образец сценария, который я создал для проверки ловушки фиксации:
#!/usr/bin/env bash
echo "THOU SHALL NOT PASS" 1>&2
exit 1
Я проверил и протестировал все, что мог, чтобы убедиться, что мой хук перед фиксацией работает должным образом. Я не знаю, что еще мне нужно проверить, чтобы убедиться, что это работает. Я могу фиксировать все, что мне нравится, и на мой экран не выводятся сообщения.
Вопросы
1. Что я упустил или упустил из виду при реализации хуков?
2. Если я реализую ловушку таким образом, нужно ли мне беспокоиться о повторной реализации той же ловушки в Tortoisesvn?
Мы очень ценим любые отзывы и / или предложения.
- Есть ли что-нибудь, что я упустил или упустил из виду при реализации хуков?
Не используйте разрешение 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'
Исходя из того, что вы написали в своем сообщении, эти шаги должны работать. Я не знаю подробностей условий, при которых ваши тесты терпят неудачу. Если вы дойдете до этого момента, возможно, вы поймете причину своих неудачных тестов.
- Если я реализую ловушку таким образом, нужно ли мне беспокоиться о том, чтобы снова реализовать ту же ловушку в Tortoisesvn?
Нет. Хуки определяются на стороне сервера. На стороне клиента ничего делать не нужно. Все клиенты будут подчиняться правилам, определенным вами в ловушке перед фиксацией.