2012-01-06 5 views
0

Я добавил в свой репозиторий пост-фиксацию на сервере Windows 2008. Поэтому каждый раз, когда что-то происходит, я подключаюсь к папке своих приложений и запускаю обновление svn. Это работает, но его чрезвычайно медленный и TortoiseSVN не заканчивается до тех пор, пока не завершится схватка после фиксации. Как я могу сделать это быстрее? Один из способов может заключаться в том, чтобы не работать с каким-либо приложением, но только с тем, где было совершено коммит. Как я мог понять, какое приложение получило фиксацию? Некоторое регулярное выражение и $ 1? Я пробовал только одно приложение, а его еще 1,5 минуты для одного файла, чтобы долго.Захват после фиксации SVN делает фиксацию очень медленной - как исправить?

Благодаря

ответ

2

Я бы разъединить совершить от обновления полностью, как (AFAIK) непрерывные серверы интеграции делают. Попросите cron запустить обновление каждые X минут в ваших приложениях. Таким образом, время фиксации вообще не будет затронуто.

+0

И если вы не хотите проводить опрос с заданиями cron, вы можете использовать фиксацию post commit, чтобы сигнализировать какой-то планировщик или очередь сообщений. Таким образом, большая часть работы по-прежнему обрабатывается другим процессом вскоре после фиксации. –

+0

Как это будет выглядеть? Как мне это сделать в пакетном файле? – EOB

+1

Вы можете просто использовать команду start для выполнения команды обновления «асинхронно». –

0

Снимите крюк Subversion и взгляните на Jenkins. Дженкинс является сервером непрерывной сборки, но то, что он делает, - это запустить процесс после совершения транзакции в Subversion. Обычно это может быть сборка, но она также может запускать обновление Subversion на вашем сервере.

Jenkins зарегистрирует все и сообщит вам (по электронной почте, чириканье, чат или даже traffic light), когда что-то пойдет не так.

Легко видеть изменения, историю и т. Д. Кроме того, это не замедляет Subversion.

Кстати, я рекомендую следующий процесс:

  • Ваш сервер работает от скажем C:\inetd\www.
  • Создайте новый каталог с именем C:\inetd\www2 и выполните svn export в этом каталоге.
  • Переименование C:\inetd\www2 - C:\inetd\www. Возможно, вам придется отказываться от вашего сервера.

Это означает, что ваш сервер никогда не запускается там, где некоторые файлы в его каталоге находятся в редакции 2000, а другие - в версии 2001. Таким образом, все ваши изменения выполняются в одно и то же время. Кроме того, у вас нет всех этих .svn каталогов повсюду (хотя клиент Subversion 1.7 улучшил это совсем немного).

Смежные вопросы