Ситуация, в которой электронный документ за время своего существования претерпевает ряд изменений, достаточно типична. При этом часто бывает важно иметь не только последнюю версию, но и несколько предыдущих. В простейшем случае можно просто хранить несколько вариантов документа, нумеруя их соответствующим образом. Такой способ неэффективен (приходится хранить несколько практически идентичных копий), требует повышенного внимания и дисциплины и часто ведёт к ошибкам, поэтому были разработаны средства для автоматизации этой работы. В этой статье подробнее о каждой технологии.
Что такое система управления версиями?
Система управления версиями — программное обеспечение для облегчения работы с изменяющейся информацией. Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.
Такие системы наиболее широко используются при разработке программного обеспечения для хранения исходных кодов разрабатываемой программы. Однако они могут с успехом применяться и в других областях, в которых ведётся работа с большим количеством непрерывно изменяющихся электронных документов.
Git vs SVN
Git - распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. Программа является свободной и выпущена под лицензией GNU GPL версии 2. По умолчанию используется TCP порт 9418.
Самая популярная система контроля версий на сегодняшний день.
Преимущества:
- Легкая система. Мало весит, не ресурсозатратная.
- Скорость работы. Хорошо оптимизированная система.
- Архитектура. Работа Git'a отличается от привычных систем управления. Данные репозитория представлены слепками, из которых состоит весь проект.
- Репозитории. Из-за популярности Git существуют огромное количество репозиториев для проектов. Из бесплатных: GitHub и Azure.
- Инструменты для работы. Реализованы многофункциональные бесплатные инструменты, такие как SourceTree.
SVN - свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet. С 2010 года Subversion является одним из проектов Apache Software Foundation и официально называется Apache Subversion.
Цель проекта в начале разработки — заменить распространённую на тот момент систему Concurrent Versions System (CVS), которая на сегодняшний день считается морально устаревшей. Subversion реализует все основные функции CVS и свободна от ряда недостатков последней.
Преимущества:
- Форматы хранилища. Можно выбрать тип хранения репозитория (БД, набор файлов).
- Библиотеки языков. Строенные библиотеки для языков, которые включают функционал по работе с системой.
- Инструменты для работы. Как и с Git существуют приложения для работы с SVN. Пример: TortoiseSVN.
Итог
SVN был заменой CVS, который успешно с этим справился, однако со временем Git набрал популярность за счет архитектуры и удобной работы с системой.
Проектов c системой SVN становится всё меньше. За счет популярности Git получает всё больше фишек, инструментов и хостингов репозиториев. Мой личный выбор Git.
Телеграмм канал: https://t.me/dotnetreview
Источники: SVN Wiki, Git Wiki