SVN vs Git — сравнение систем контроля версий

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

Как правило, системы контроля версий используются для разработки программного обеспечения, офисных приложений и систем управления контентом (CMS). Apache Subversion (SVN) и Git — одни из самых популярных программ для контроля версий, их можно либо установить на собственный сервер, либо арендовать через службу веб-хостинга. Самым популярным веб-хостингом для Git-проектов является GitHub. Хостинг Subversion предлагают такие решения, как RiouxSVN. Такие сервисы, как SourceForge, размещают обе системы.

SVN: преемник CVS от CollabNet

CollabNet начал разработку SVN в 2000 году и выпустил первую версию примерно четыре года спустя. С ее выпуском SVN, по сути, стала законным преемником CVS (Concurrent Versions Systems). В 2009 году проект перешел в Apache Software Foundation, сменив при этом свое название.

SVN опирается на централизованную систему управления версиями. Проще говоря, это означает, что существует действующий каталог (репозиторий), к которому имеют доступ все пользователи. Учитывая, что изменения в файлах и документах не связаны друг с другом, эта система не позволяет двум пользователям одновременно редактировать один и тот же файл. При такой установке первый пользователь, получивший доступ к файлу, получает и права на его редактирование, делая его недоступным для работы других пользователей. Apache Subversion также позволяет загружать и редактировать любой подпункт независимо от остальной части соответствующего дерева каталогов. Такая гибкость позволяет назначать разным пользователям различные разрешения на чтение и запись для всех путей. Дополнительной особенностью Subversions является то, что пустые, безымянные или перемещенные каталоги также могут быть зарегистрированы без каких-либо опасений по поводу потерь из их истории.

Git: временное решение разработчиков ядра Linux

В 2005 году Линус Торвальдс, создатель Linux, начал, более или менее против своей воли, разрабатывать новое программное обеспечение для управления версиями. Причина: из-за изменения лицензионных условий с компанией BitKeeper разработчики ядра Linux потеряли свободный доступ к этой программной системе. На его место пришла новая система, имеющая схожую структуру работы с BitKeeper. Защита от непроизвольных изменений и высокая эффективность являются дополнительными свойствами этой новой системы. Всего через несколько дней работы Торвальдс представил свою первую версию Git.

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

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

SVN vs Git: сравнение систем

Что лучше — SVN или Git? К сожалению, на этот вопрос нет простого ответа. Все зависит от потребностей вашего проекта. Обе системы отличаются своими структурами и операционными процессами, которые вытекают из этих структур. В следующей таблице приведены наиболее важные различия между ними:

 

SVN

Git

Управление версиями

Центральная

Распределенный

Репозиторий

Центральное хранилище, в котором создаются рабочие копии

Локально доступные копии хранилища, в которых можно работать над файлами и документами

Авторизация доступа

На основе пути

Для всего каталога

Отслеживание изменений

Регистрирует файлы

Регистрирует содержимое

История изменений

Только полная в репозитории. Рабочие копии содержат только самую новую версию

Репозиторий и рабочие копии содержат полную историю изменений

Сетевое подключение

Необходимо для доступа

Необходимо только для синхронизации

Вот преимущества каждой из двух систем:

Git следует использовать, если …

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

Subversion следует использовать, если…

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

Если перечисленные возможности не кажутся вам актуальными, то стоит попробовать каждую систему контроля версий, чтобы понять, какая из них вам подходит. Обе системы предлагают помощь в виде большого сообщества, отличных хостинг-провайдеров, таких как GitHub, и профессиональной поддержки.

Оцените статью
cdelat.ru
Добавить комментарий