Назад | Перейти на главную страницу

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

Задний план
Я пытаюсь реализовать несколько приемов фиксации для 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?

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

  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?

Нет. Хуки определяются на стороне сервера. На стороне клиента ничего делать не нужно. Все клиенты будут подчиняться правилам, определенным вами в ловушке перед фиксацией.