Можем ли мы изменить шаблон фиксации svn по умолчанию, используя svn hooks - PullRequest
1 голос
/ 21 ноября 2011

Прежде всего, я хотел изменить шаблон фиксации по умолчанию (svn-commit.tmp) на лету, когда я делаю фиксацию svn. Из форумов я узнал, что настройка SVN_EDITOR поможет

setenv SVN_EDITOR "rm svn-commit.tmp && cp $REPO/hooks/log.tmpl svn-commit.tmp && emacs"

Но это произойдет, только если пользователь установит SVN_EDITOR в своей пользовательской среде, как указано выше. Так есть ли какой-либо другой явный способ, когда я делаю SVN-коммит, я открываю файл шаблона из другого места, а не по умолчанию. Шаблон фиксации будет более точным для репозиториев и даты фиксации. Так есть ли способ, которым я могу установить какое-либо свойство в хранилище SVN для вызова другого шаблона фиксации. Я должен применять его ко всем (специфично для репозитория), и он не должен быть специфичным для пользователя, как установка SVN_EDITOR. Даже если мы устанавливаем SVN_EDITOR, может ли этот параметр вызываться, когда мы выполняем svn commit, вызывая некоторые хуки. Я понимаю, что хуки до и после коммита будут вызываться только после отправки коммита.

Мы используем только клиент команды svn.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Существует 2 возможных варианта, в зависимости от используемого вами клиента Subversion:

  • TortoiseSVN: для этого используйте клиентские хуки
  • Клиент команды SVN: используйтесценарий оболочки и некоторые свойства svn

Клиентские хуки TortoiseSVN

Если вы посмотрите главу «Сценарии хуков на стороне клиента» справки TortoiseSVN, вы найдете следующий раздел:

Start-commit

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

Хук имеет следующие аргументы:

  • ПУТЬ: путь к временному файлу, который содержит все пути, для которых была запущена операция.Каждый путь находится на отдельной строке во временном файле.
  • MESSAGEFILE: Путь к файлу, содержащему сообщение журнала для фиксации.Файл содержит текст в кодировке UTF-8.После успешного выполнения ловушки start-commit сообщение журнала читается обратно, давая крючку возможность его изменить.
  • CWD: текущий рабочий каталог, с которым запускается скрипт.Для него задан общий корневой каталог всех затронутых путей.

Таким образом, у вас есть компоненты для реализации небольшого сценария, который изменяет шаблон фиксации svn в зависимости от каталога.Однако вам нужно позаботиться о том, как развернуть клиентский хук, потому что каждый пользователь должен устанавливать их самостоятельно.

Командный скрипт клиента SVN и свойство svn: template-file

  1. Определите сценарий оболочки, который будет вызывать настоящую команду subversion.
  2. Определите свойство svn для каталогов с полезным именем (например, template-file) и ищите из начального каталога вверх каталог, в котором есть это свойство svnset.
  3. Используйте свойство found в качестве имени файла для поиска содержимого (возможно, это должен быть URL-адрес, поэтому не требуется локальная установка этих шаблонов).
  4. Если ничего не найдено, используйтешаблон по умолчанию.

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

0 голосов
/ 24 ноября 2012

Вот тот, который я создал.Он пытается использовать шаблон TortoiseSVN, если он существует, в противном случае он ищет файл шаблона в глобальной конфигурации Git, в противном случае он возвращается к встроенному шаблону.

Обратите внимание, что использование стандартного свойства шаблона TortoiseSVN не означает, что вы должны установить TortoiseSVN.

...