альтернатива хуку SVN, который изменяет транзакцию - PullRequest
1 голос
/ 08 ноября 2010

Мне нужно сделать следующее, и я могу думать только о решении svn-хука, но изменение транзакции в хуке должно быть плохим:

У нас есть производственный репозиторий и тестовый репозиторий. Я хочу убедиться, что когда кто-то фиксирует производственный репозиторий, он в этом уверен, и что он не по ошибке что-то предназначенное для тестового репозитория. Поэтому я предпочитаю ловушку перед фиксацией, которая запрещает фиксацию в производственном репо, если коммиттер не запускает сообщение журнала со строкой «ПРОИЗВОДСТВО», а затем удаляет строку, чтобы остальная часть сообщения журнала осталась. *

Оправдывает ли этот сценарий использование ловушки для изменения (сообщения журнала) транзакции? Если нет, то каким образом это может вызвать проблемы? Может кто-нибудь предложить лучшую альтернативу?

Ответы [ 4 ]

1 голос
/ 08 ноября 2010

Вы можете редактировать свойство ревизии в хуке после фиксации, который изменяет это сообщение журнала. Это кажется более чистым, чем изменение транзакции до ее завершения.

0 голосов
/ 19 сентября 2014

Я тоже искал примеры хуков перед фиксацией, которые модифицируют svn: log, поскольку в нем явно сказано, что вы можете сделать это в pre-commit.tmpl. Мой сценарий предварительной фиксации BASH для Subversion вызывает сценарий Python, чтобы установить сообщение журнала, расширив ключ выпуска JIRA до сводки по выпуску JIRA. Я обнаружил, что даже на момент написания этой статьи не так много примеров, и я также обнаружил, что большинство людей считают, что это плохая идея, потому что они путают изменение не версионных свойств с изменением транзакции. правильный.

Единственный способ фактически изменить svn: log в хуке предварительной фиксации - использовать привязки Python к API svn, как они делают это в проекте FreeBSD со скриптом log log. Джеймс Таубер объясняет это (хотя пост датирован, потому что он ссылается на SVN 1.3) - Google, потому что я не могу опубликовать больше ссылок в этом ответе.

Важно знать, что существует несколько различных привязок Python к Subversion, кроме оболочки на основе SWIG, основанной на Python-subversion, которая поставляется вместе с самой Subversion (например, SubvertPy). Проект PySVN включает интерфейс «транзакции», который дает вам возможность изменять svn: log в хуке предварительной фиксации. На самом деле это несколько документировано, в отличие от стандартных привязок Python-Subversion.

0 голосов
/ 16 марта 2011

Вы можете полностью отклонить коммит во время предварительной фиксации, если пользователь не придерживается стандартов.

Кроме того, вы МОЖЕТЕ изменить НЕВЕРСИОННЫЕ свойства во время предварительной фиксации.Примерами не версионных свойств являются ... svn: log, которые вы хотите изменить.Я считаю, что правило таково: если это свойство revision, оно не является версионным, но если это свойство файла / каталога, оно версионно.

Свойства ревизии - это такие вещи, как svn: log, svn:автор и т. д. - и, как правило, применяются в ревизии в корне хранилища.

Существует множество примеров сценариев ловушки перед фиксацией, которые изменяют svn: log во время фиксации.Быстрый пример - FreeBSD log-police.py , используемый в репозитории, поддерживающем основную ОС FreeBSD.

0 голосов
/ 08 ноября 2010

Совершенно нормально откатить транзакцию в скрипте перехвата, если пользователь не придерживается требований фиксации.

http://www.waltercedric.com/java-j2ee-mainmenu-53/165-tools/1678-how-to-check-commit-comments-on-svn-commit.html

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