У меня есть репозиторий, который имеет следующие каталоги:
Магистральный каталог содержит основную строку разработки. Я создал сценарий рычага постфиксации для репозитория, который обновляет рабочую копию (соединительной линии), когда пользователь передает назад репозиторию.
Это выглядит примерно так:
/usr/bin/svn update /path/to/a/working/copy
Я только что создал ответвление кода, поскольку я собираюсь запустить некоторые существенные изменения, но заметил, что, когда я передаю свои изменения в ответвлении, оно называет рычаг постфиксации и обновляет рабочую копию (копия соединительной линии).
Существует ли способ, которым я могу изменить или свой сценарий рычага постфиксации или настройку, которую я могу установить, который только обновил бы рабочую копию, если бы фиксация была сделана к магистральному каталогу и не какому-либо другому каталогу?
Как вы можете видеть в в этой документации , параметры передаются в сценарий после коммитария.
Репозиторий проходит два аргумента этой программе: путь к репозитории, а новый номер редакции, который был создан.
Крюк после фиксации может быть любая программа любого типа: скрипт Bash, программа C, сценарий Python ... Что произойдет, в том, что оболочка запускает эту программу с двумя параметрами.
Вы можете найти список интересных сценариев здесь . Хорошее начало будет этот сценарий Python , который использует Python SVN Libs.
Обратите внимание, что предоставленный путь не совпадает с пути к файлу, в котором вы проверяете (см. Ответ Paul ). Но, используя эту информацию с revnum, должна помочь вам получить список изменений, из которых вы можете определить, были ли выполнение операций на багажнике или нет.
В дополнение к ответу от Bishiboosh , стоит отметить, что крючки могут быть любой программы . То есть, если вы хотите, вы можете написать программу в C
. Параметры, которые передаются, описаны в документе .
Для хорошего хранилища сценариев, чтобы получить вдохновение, посмотрите на страницу страницу инструментов Subversion . В целом, если вы хотите выполнить некоторую условную обработку на основе содержимого транзакции, и вы делаете, поскольку вы хотите обрабатывать, если файлы находятся в багажнике, то будет проще всего использовать Python, поскольку это поставляется с Куча инструментов для изучения транзакций. Этот скрипт - это хорошее место для начала вдохновения.
Обратите внимание, что путь к параметрам, не совпадает с пути к файлу, в котором вы проверяете. Вы можете иметь несколько файлов в Checkin в конце концов ... то, что вы пройдете, - это местоположение хранилища, и пересмотр изменения. Используя эти две части информации, вы можете получить информацию об изменении с репозитория и использовать эту информацию для решения того, выполнять ли действие или нет в крючке после фиксации.
Вот другой пример (в Perl), что явно проверяет путь файлов в регионом. Это гораздо более сложный скрипт, но, скорее всего, выделенные детали могут быть вырваны и повторно использованы.