SVN Автоматическое обновление рабочих копий
Можно ли настроить Subversion, чтобы при фиксации обновления в хранилище все извлеченные рабочие копии обновлялись автоматически?
заранее спасибо
2 ответа
Нет, и если вам удастся взломать решение, которое сделало это, я думаю, что все, кто его использует, будут расстроены вами. svn update
вызывает объединение любых файлов, которые пользователь изменил в своей рабочей копии. Это слияние может пойти не так, как надо, и потерять все свои изменения, если они не обратят внимания. В SVN и большинстве других систем контроля версий, которые широко используются, пользователь должен явно запросить получение работы, которую другие люди выполняли ПО ДИЗАЙНУ. Это значит, что человек не прерывает собственный рабочий процесс, пытаясь заставить свои изменения скомпилировать и выполнить чью-то (возможно, незавершенную) работу, пока они не станут хорошими и не будут готовы потратить время на правильное прохождение слияния. DVCS, такой как Mercurial или git (или Fossil, или Bazaar, или veracity, или...), позволит вам вносить изменения без слияния (и пока не видеть их в вашей рабочей копии), в этих системах может иметь смысл автоматически вносить изменения, но SVN сочетает тягу с обновлением, так что особенно в SVN такое автоматическое обновление было бы плохой идеей.
Отмечу, что системы контроля версий с парадигмой "блокировать, редактировать, разблокировать" действительно могут хорошо работать с системой автоматического обновления. ClearCase работает таким образом, например. Но современные системы почти всегда "копируют, редактируют, объединяют" и поэтому не поддаются автоматической системе обновлений, поскольку над одним файлом могут работать несколько человек.
Теперь, может быть, вы хотите, чтобы конкретные рабочие копии только для чтения обновлялись автоматически, например, на сервере сборки или что-то в этом роде. ЭТО будет хорошим кандидатом на хук-скрипт в SVN или даже лучше на работу cron в Unix-подобных системах или запланированную задачу в Windows.
Нет, нет Ничто не отслеживает все рабочие копии. Если вы знаете, где находятся все рабочие копии, вы можете написать хук, который обновит все WC. Но нет универсального метода.