Как написать сценарий подключения SVN - PullRequest
3 голосов
/ 19 марта 2012

Я пытаюсь написать скрипт пост-фиксации для svn для экспорта репозитория на сервер Team Foundation. (Поэтому, когда вы фиксируете код, эта последняя версия кода копируется в репозиторий Team Foundation)

Только язык, который я использую, это C ++ и C, и я никогда не писал сценарий. Кто-нибудь может дать мне пошаговую инструкцию для этого? какой язык использовать, что читать и т. д. вместе с примером кода, возможно ??

Можно ли написать хук-скрипт на с ++? или я должен научиться использовать python или ruby ​​и т.д ..

Ответы [ 3 ]

7 голосов
/ 19 марта 2012

Вы можете написать свой хук, используя C или C ++, если хотите.Большинство людей используют Perl или Python.

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

Вот несколько вещей, о которых следует помнить о вашем post-commit хуке:

  • Вы не можете изменить ревизию и не пытаться зафиксировать изменения.Ваш пост-фиксационный хук в итоге вызовет сам себя.Если вы хотите, чтобы ваши разработчики следовали определенным параметрам, вам нужен хук pre-commit, который не срабатывает, если разработчики делают это неправильно.
  • Когда Subversion вызывает ваш хук post-commit, PATHПеременная среды была удалена.Если вам нужен доступ к другой команде или файлу, вам придется указать полный путь самостоятельно.
  • Subversion передаст вам определенные параметры из командной строки .Не фактическая командная строка, но это означает, что вы можете найти эти параметры в ARGV.Вам будут переданы два параметра:
    1. Путь к хранилищу на сервере (для команды svnlook).
    2. Ревизия хранилища.

Все остальное, что вы должны вывести, хотя svnlook (который вы можете запустить с помощью команды system. Однако, поскольку вы на самом деле пишете вещи на C и C ++, вы можете использовать встроенный Subversion API ).

Еще одна возможность: использовать систему непрерывной сборки, такую ​​как Jenkins , чтобы сделать грязную работу за вас.Возможно, вам будет проще работать через Jenkins, а не беспокоиться о том, как ловушка после фиксации может выполнить эту задачу.Одним из преимуществ Jenkins является то, что, когда что-то идет не так, вы не отправляете обратно ошибочные сообщения после фиксации пользователю (который, вероятно, не виноват).Вместо этого вы можете получить полный журнал того, что произошло, и предупредить человека, который действительно может решить проблему.

Вот образец одного , который я написал, который написан на Perl.Не знаю, принесет ли это вам пользу.

1 голос
/ 19 марта 2012

Инструкции по определению ловушки перед фиксацией можно найти здесь: http://wordaligned.org/articles/a-subversion-pre-commit-hook

Создание пост-фиксации аналогично этой инструкции.

После того, как вы скопировалишаблон пост-фиксации в новый файл, вы можете просто добавить строку для вызова программы, которую вы написали на c ++, и просто передать аргументы вашей программе.

Это зависит от того, что вы делаете, ноБольшую часть времени вы экономите на использовании языка сценариев в качестве shell-script или python для своей работы.

0 голосов
/ 20 марта 2012

Вот ответ стекопотока с примером для перехвата пост-фиксации на окнах с использованием собственных команд оболочки Windows - https://stackoverflow.com/a/3630534/7984

...