2012-06-20 7 views
2

Я видел много цитат на тему "Git против SVN", то, как правило, anwser являетсяИмеет ли Git положительное влияние на непрерывную доставку (интеграцию) в виде SCM?

  1. вы можете совершить в любом месте
  2. экономии места
  3. филиал быстро

...

Но здесь я хочу обсудить, хорошо ли для непрерывной доставки? Мне кажется, что Git поощряет нас к частому ветвлению, но это работает против понятия «Непрерывная поставка», который выступает за слияние с магистрали часто, когда релиз не включен.

Итак, я немного озадачен, когда хочу выбрать систему контроля версий для нашей постоянной доставки, Git или SVN?

Как вы знаете?

+0

Не похоже, что этот вопрос подходит для SO. Вы можете найти десятки (если не сотни) дискуссий по теме только по Google. Согласно [FAQ] (http://stackoverflow.com/faq#dontask): * Вы должны задавать только практические, ответные вопросы, основанные на реальных проблемах, с которыми вы сталкиваетесь. Chatty, открытые вопросы уменьшают полезность нашего сайта и вызывают другие вопросы с первой страницы *. –

+0

Кажется, нет хорошего обсуждения вопроса, все дебаты - svn VS git, но когда дело доходит до CI и CD, не соответствующий ответ. Вы можете google для «git svn непрерывной интеграции», верхний пост - это один. – welkinwalker

+0

Я предполагаю, что git предоставляет как можно больше возможностей. Теоретически. Практически вам необходимо согласовать процесс и настроить интегрированную цепочку инструментов для вашего рабочего процесса. Последнее беспокоит меня сейчас, все так сложно настроить, если вы не находитесь на github. –

ответ

0

Я думаю, вы должны понимать разницу первой ч/б мерзавца и SVN посмотрите эту ссылку .. Why is Git better than Subversion?

Я думаю, что после этого вы можете знать, какой из них вы должны выбрать ..

0

Прежде всего, я бы никогда не выбрал svn. Могут быть некоторые случаи, но в целом git намного более гибкий.

Это говорит о том, что давайте посмотрим на Continuous Delivery (CD). С моей точки зрения, это часто означает развертывание. Это также означает, что вам нужна какая-то непрерывная интеграция (CI), в которой вы запускаете свои тесты и решаете, отправляется ли версия или нет. Это также означает, что вам нужен какой-то рабочий процесс, как определить, какая версия тестируется и отправляется.

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

Это не работает с CD, потому что вы хотите иметь хотя бы одну стабильную ветвь. Эта ветка должна заполняться только стабильными версиями программного обеспечения, которое затем запускается в производство. Вам также нужна ветка тестирования, где функции объединяются, которые готовы к тестированию, а затем развернуты. И вы хотите любое количество ветвей разработки, где еще не готовы все функции.

Не ошибитесь: вы можете делать CD с svn. Это просто, что git был разработан, чтобы хорошо работать со многими филиалами и удаленными репозиториями на разных серверах, в то время как svn был разработан для работы как единый репозиторий, где каждый может принять обязательства.

У вас также может возникнуть проблема с управлением пользователями. Я не знаю о svn, но я думаю, что у вас не может быть разных прав для разных филиалов. Это означает, что каждый, у кого есть доступ на запись к репо, может разорвать ваше приложение и развернуть этот материал. С другой стороны, легко создать репозиторий, где только старший разработчик имеет доступ на запись и который развертывается. Все остальные разработчики работают в другом удаленном репозитории. Затем ответственный человек тянет все вещи и подталкивает их на другой сервер, чтобы они были развернуты.

Все это происходит из-за того, что git был спроектирован так, что у него было много репозиториев, которые объединяются вместе, разветвляются, раздвоены и исправлены на регулярной основе (проекты с открытым исходным кодом). С другой стороны, svn - это скорее программное обеспечение компании, где вам нужно обновлять свои файлы и, возможно, иметь филиал или два для разных версий вашего программного обеспечения, но не намного больше.

Последняя вещь: Я бы выбрал git over svn каждый день.

0

Независимо от Subversion или Git, если рабочий процесс правильный, все должно быть хорошо. Каждая система контроля версий поддерживает ветви, и некоторые люди считают траву зеленой с одной стороны или другой, но факт - контроль версий - это товар.

Для инфраструктуры вокруг системы управления версиями, обычно называемой управлением жизненным циклом приложения (например, непрерывной интеграцией), более важной целью является зрелость инструментов, используемых для интеграции системы контроля версий с другими частями головоломки. Тесная интеграция с IDE также хороша, чтобы сделать время разработчика максимально продуктивным.

Вы найдете много фанатиков Git, активных на форумах, но есть причина, по которой Subversion имеет (и сегодня) самую популярную систему управления версиями. Я стараюсь быть агностиком, но чтобы противостоять некоторой риторике «svn sucks», вы можете прочитать это: http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/

+0

Да, я согласен, что непрерывная доставка - это скорее дисциплин, чем выбор инструмента. SVN является зрелым, Git находится на пути к зрелости – welkinwalker

+0

Я знаю, что многие компании предпочитают центральный сервер для непрерывной интеграции, потому что с DVCS это зависит от разработчика, если они передают свою работу местному репо, их коллегам-репо или «основной» репозиторий. С центральным сервером вы гарантируете, что все фиксации произойдут, когда инструменты непрерывной интеграции могут их поднять, а с помощью DVCS вам придется полагаться на отдельных участников после процесса. – vinnyjames

0

Ваша забота действительно. От http://martinfowler.com/bliki/FeatureBranch.html

Хотя многие люди ассоциируют DVCSs с функцией ветвления, они могут быть использованы с CI. Все, что вам нужно сделать, это отметить одну ветку на одном репозитории в качестве основной линии. Если каждый тянет и толкает к этому каждый день, тогда у вас есть линия CI. Действительно, с дисциплинированной командой I обычно предпочитает использовать DVCS в проекте CI, чем централизованный . С менее дисциплинированной командой я бы волновался, что DVCS будет подталкивать людей к долгоживущим ветвям, в то время как централизованное VCS и нежелание ветки подталкивает их к частым замыканиям на магистрали.