Прежде всего, я бы никогда не выбрал svn. Могут быть некоторые случаи, но в целом git намного более гибкий.
Это говорит о том, что давайте посмотрим на Continuous Delivery (CD). С моей точки зрения, это часто означает развертывание. Это также означает, что вам нужна какая-то непрерывная интеграция (CI), в которой вы запускаете свои тесты и решаете, отправляется ли версия или нет. Это также означает, что вам нужен какой-то рабочий процесс, как определить, какая версия тестируется и отправляется.
Назад в svn дней, у нас не было никаких филиалов, потому что это беспокоило. Все будут входить в репозиторий, а затем кто-то, кто несет ответственность за доставку, увидит, все ли в порядке и использует его версию репозитория для отправки.
Это не работает с CD, потому что вы хотите иметь хотя бы одну стабильную ветвь. Эта ветка должна заполняться только стабильными версиями программного обеспечения, которое затем запускается в производство. Вам также нужна ветка тестирования, где функции объединяются, которые готовы к тестированию, а затем развернуты. И вы хотите любое количество ветвей разработки, где еще не готовы все функции.
Не ошибитесь: вы можете делать CD с svn. Это просто, что git был разработан, чтобы хорошо работать со многими филиалами и удаленными репозиториями на разных серверах, в то время как svn был разработан для работы как единый репозиторий, где каждый может принять обязательства.
У вас также может возникнуть проблема с управлением пользователями. Я не знаю о svn, но я думаю, что у вас не может быть разных прав для разных филиалов. Это означает, что каждый, у кого есть доступ на запись к репо, может разорвать ваше приложение и развернуть этот материал. С другой стороны, легко создать репозиторий, где только старший разработчик имеет доступ на запись и который развертывается. Все остальные разработчики работают в другом удаленном репозитории. Затем ответственный человек тянет все вещи и подталкивает их на другой сервер, чтобы они были развернуты.
Все это происходит из-за того, что git был спроектирован так, что у него было много репозиториев, которые объединяются вместе, разветвляются, раздвоены и исправлены на регулярной основе (проекты с открытым исходным кодом). С другой стороны, svn - это скорее программное обеспечение компании, где вам нужно обновлять свои файлы и, возможно, иметь филиал или два для разных версий вашего программного обеспечения, но не намного больше.
Последняя вещь: Я бы выбрал git over svn каждый день.
Не похоже, что этот вопрос подходит для SO. Вы можете найти десятки (если не сотни) дискуссий по теме только по Google. Согласно [FAQ] (http://stackoverflow.com/faq#dontask): * Вы должны задавать только практические, ответные вопросы, основанные на реальных проблемах, с которыми вы сталкиваетесь. Chatty, открытые вопросы уменьшают полезность нашего сайта и вызывают другие вопросы с первой страницы *. –
Кажется, нет хорошего обсуждения вопроса, все дебаты - svn VS git, но когда дело доходит до CI и CD, не соответствующий ответ. Вы можете google для «git svn непрерывной интеграции», верхний пост - это один. – welkinwalker
Я предполагаю, что git предоставляет как можно больше возможностей. Теоретически. Практически вам необходимо согласовать процесс и настроить интегрированную цепочку инструментов для вашего рабочего процесса. Последнее беспокоит меня сейчас, все так сложно настроить, если вы не находитесь на github. –