Перейти к содержимому

Система управления версиями

Определение

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

Ниже приведён список наиболее распространённых инструментов VCS.

  1. Git

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

    Git

    Недостатки Git

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

  2. CVS

    CVS (Concurrent Versions System) исторически был популярен, но сейчас во многом устарел, уступив место современным распределённым системам. Он помогал разработчикам фиксировать историю файлов и документов. По умолчанию он обрабатывает проекты от небольших до средних, а для поддержки более крупных проектов его необходимо настраивать и расширять. CVS можно использовать практически на любой аппаратной платформе и операционной системе. Это бесплатное программное обеспечение с открытым исходным кодом.

    CVS

    Недостатки CVS

    У CVS тоже есть недостатки. В частности, он не проверяет целостность репозитория исходного кода. Отсутствует поддержка атомарных коммитов и чекаутов, а также отслеживания слияний и подписанных ревизий.

  3. SVN

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

    SVN

    Недостатки SVN

    Не хранится время модификации файлов, наблюдаются некоторые проблемы с нормализацией имён файлов и отсутствие поддержки подписанных ревизий.

  4. Mercurial

    Mercurial — это распределённая система управления версиями, написанная на Python. Это быстрое программное обеспечение поддерживает проекты любого размера и типа. Его интерфейс довольно предсказуем, что облегчает изучение. Оно поддерживает следующие операционные системы: Unix-подобные, Windows и macOS. Оно отлично работает с бинарными файлами и обладает превосходными возможностями слияния и ветвления. Это бесплатное программное обеспечение с открытым исходным кодом.

    Mercurial

    Недостатки Mercurial

    Для всех дополнений требуется Python. Оно не поддерживает частичные чекауты и некорректно работает с дополнительными расширениями.

  5. Monotone

    Monotone — это распределённая система управления версиями, написанная на C++. Это транзакционная VCS, обеспечивающая полностью автономную работу. Слияние учитывает историю, ветки довольно лёгкие.

    Monotone поддерживает эффективную синхронизацию по протоколу peer-to-peer. Он понимает слияние с учётом истории, требует минимального обслуживания, ценит целостность проверки кода и поддерживает трёхсторонние слияния. Он работает на нескольких платформах: Linux, Solaris, Mac OS X, Windows и других Unix-системах. Это бесплатное программное обеспечение с открытым исходным кодом.

    Monotone

    Недостатки Monotone

    Пользователи не могут делать checkout или commit из-за прокси из-за отсутствия протокола HTTP. Для некоторых операций наблюдаются проблемы с производительностью. Наиболее очевидной из них является начальная загрузка (pull).

    Примечание: Monotone в значительной степени заброшен и имеет ограниченную актуальность в современных условиях.

Практика

Какая из перечисленных функций не является особенностью Git как системы управления версиями?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.