Автоматическое обновление рабочей копии SVN при коммите в SVN

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

Для того, чтобы на сервере, на котором работает сервер репозиториев svn при коммите выполнялись какие-либо действия, в частности, обновление рабочей копии — достаточно воспользоваться файлом /svn/repositoryname/hooks/post-commit В этом файле указываются действия, которые будут выполнены после каждого коммита в репозиторий.

Вписываем следующие строчки:
#!/bin/bash
cd /WORKING_COPY_CATALOG
svn up –username SVN_USERNAME –password SVN_PASSWORD

Аналог функции Shelve Pending Changes в SVN

Team Foundation Server обладает одной довольно удобной функциональностью — возможностью сохранения изменений на сервере без коммитов. Это помогает при осуществлении больших правок, когда изменения еще не готовы полностью, но хочется иметь некую промежуточную точку для себя. Выбрав Shelve Pending Changes и указав имя «полки» для изменений можно сохранить изменения, а затем при необходимости вернуть их командой Unshelve Pending Changes.

SVN в чистом виде не имеет такой возможности, но подобное поведение можно сымитировать, если использовать патчи SVN. Сделав изменения, выберите нужные файлы, для которых необходимо сделать контрольную точку и вызовите команду Create Patch (клиент Tortoise SVN).


Tortoise SVN спросит для каких файлов следует сделать патч и покажет диалог для сохранения файла патча на диске. Полученным файлом, который представляет собой обычный текстовый файл, подобный результатам работы сравнения файлов в unified diff, можно легко поделиться с коллегами. Для того, чтобы вернуть изменения, сделанные на момент создания патча следует выбрать команду ApplyPatch и выбрать файл патча.