Открыть сервис

BitKeeper

BitKeeper — это распределённая система управления версиями (VCS), разработанная компанией BitMover Inc. Первоначально выпущенная в 2000 году, она была одной из первых систем, реализовавших модель распределённого контроля версий, в отличие от централизованных систем, таких как CVS и Subversion. BitKeeper известна прежде всего тем, что использовалась для разработки ядра Linux с 2002 по 2005 год, а также своим коммерческим характером, что привело к созданию альтернативной распределённой системы — Git.

История

Предпосылки создания

В конце 1990-х годов разработка ядра Linux осуществлялась с помощью централизованной системы управления версиями CVS, а затем — BitKeeper, который был предложен её автором Ларри Маквоем (Larry McVoy). Маквой, ранее работавший в Sun Microsystems, имел опыт разработки систем управления версиями и хотел создать инструмент, который бы сочетал в себе гибкость распределённой архитектуры с надёжностью централизованных систем. Основной проблемой того времени было отсутствие эффективных средств для работы с большими проектами, где разработчики могли работать автономно, без постоянного подключения к центральному серверу.

Разработка и выпуск

BitKeeper был создан компанией BitMover Inc., основанной Ларри Маквоем в 1999 году. Первая публичная версия (1.0) вышла в 2000 году. Система предлагала модель распределённого репозитория, где каждый разработчик мог иметь полную копию истории изменений, что позволяло работать в офлайн-режиме. BitKeeper поддерживал такие функции, как слияние (merge) изменений, ветвление (branching), а также атомарные коммиты.

Использование в разработке ядра Linux

В 2002 году Линус Торвальдс, создатель ядра Linux, принял решение использовать BitKeeper для управления разработкой ядра. Это было вызвано неэффективностью централизованных систем при работе с большим количеством участников и частыми слияниями изменений. BitKeeper предоставлял удобные средства для работы с распределёнными репозиториями, что соответствовало потребностям проекта.

Однако использование BitKeeper вызвало споры в сообществе, так как система была проприетарной (коммерческой) и не соответствовала идеалам свободного программного обеспечения. В 2005 году, после того как BitMover отозвала бесплатную лицензию для разработчиков ядра Linux из-за нарушения условий (в частности, попыток обратного проектирования системы), Торвальдс начал разработку собственной распределённой системы — Git. Первая версия Git была выпущена в апреле 2005 года, и вскоре он заменил BitKeeper в разработке ядра Linux.

Дальнейшее развитие

После ухода из проекта Linux компания BitMover продолжила развитие BitKeeper, но система потеряла популярность в сообществе открытого кода. В 2016 году BitMover объявила о прекращении поддержки BitKeeper, а в 2018 году исходный код системы был опубликован под лицензией Apache 2.0, что сделало её открытой. Однако к тому времени Git и другие распределённые системы (Mercurial, Bazaar) уже заняли доминирующее положение на рынке.

Архитектура и принципы работы

Распределённая модель

BitKeeper, как и современные системы управления версиями, использует распределённую модель, где каждый разработчик имеет полную копию репозитория, включая всю историю изменений. Это позволяет выполнять операции (коммиты, слияния, просмотр истории) без подключения к центральному серверу. Синхронизация между репозиториями осуществляется через push/pull-запросы, аналогичные тем, что используются в Git.

Репозитории и изменения

Репозиторий BitKeeper состоит из набора файлов и директорий, а также метаданных, хранящихся в специальной папке .bk. Каждое изменение (коммит) представляет собой набор изменений в файлах, связанных с уникальным идентификатором (хэшем). Система поддерживает атомарные коммиты, то есть изменения в нескольких файлах фиксируются как единая операция.

Ветвление и слияние

BitKeeper поддерживает создание веток (branches) для параллельной разработки. Ветки могут быть как локальными, так и удалёнными. Слияние (merge) изменений из одной ветки в другую выполняется автоматически, с возможностью разрешения конфликтов вручную. Система использует алгоритм трёхстороннего слияния, основанный на общем предке изменений.

Работа с удалёнными репозиториями

BitKeeper позволяет синхронизировать изменения между несколькими репозиториями через протоколы HTTP, HTTPS или собственный протокол bk. Для этого используются команды bk pull (получение изменений) и bk push (отправка изменений). Система поддерживает модель «push-pull», где каждый разработчик может отправлять изменения в общий репозиторий или получать их от других участников.

Ключевые особенности

Преимущества

  • Распределённость: возможность работы в офлайн-режиме и полная история изменений на каждом клиенте.
  • Производительность: система была оптимизирована для работы с большими проектами, такими как ядро Linux.
  • Гибкость: поддержка различных моделей разработки, включая централизованную (с одним главным репозиторием) и распределённую.
  • Инструменты для слияния: встроенные средства для разрешения конфликтов и автоматического слияния.

Недостатки

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

Сравнение с другими системами

BitKeeper и Git

Git, созданный Линусом Торвальдсом, был вдохновлён архитектурой BitKeeper, но превзошёл его по ряду параметров:

  • Открытость: Git с самого начала был свободным программным обеспечением, что способствовало его широкому распространению.
  • Производительность: Git быстрее выполняет операции слияния и просмотра истории, особенно в больших репозиториях.
  • Экосистема: Git имеет богатую экосистему инструментов (GitHub, GitLab, Bitbucket), а также множество плагинов и расширений.
  • Простота: интерфейс Git, хотя и сложен для новичков, стал стандартом де-факто благодаря обширной документации и сообществу.

BitKeeper и Mercurial

Mercurial, также выпущенный в 2005 году, был прямым конкурентом BitKeeper. Он также использовал распределённую модель, но был написан на Python, что делало его более медленным, но более простым для расширения. Mercurial потерял популярность после того, как Git занял доминирующее положение, но до сих пор используется в некоторых проектах (например, Facebook — организация признана экстремистской и запрещена в РФ).

Применение

Историческое значение

BitKeeper сыграл ключевую роль в развитии распределённых систем управления версиями. Его использование в разработке ядра Linux показало преимущества распределённой модели, что привело к созданию Git и, в конечном счёте, к смене парадигмы в управлении версиями в индустрии программного обеспечения.

Современное использование

После открытия исходного кода BitKeeper в 2018 году система получила ограниченное применение в некоторых нишевых проектах, но не смогла конкурировать с Git. В настоящее время BitKeeper используется в основном в образовательных целях или для изучения истории развития систем управления версиями.

Интересные факты

  • Название «BitKeeper» происходит от слов «bit» (бит) и «keeper» (хранитель), что отражает функцию системы по хранению изменений в коде.
  • Разработка Git была мотивирована не только отзывом лицензии BitKeeper, но и желанием Торвальдса создать систему, которая бы лучше соответствовала потребностям ядра Linux, в частности, более быструю и надёжную.
  • BitKeeper был одной из первых систем, реализовавших концепцию «честного слияния» (honest merge), где система учитывает семантику изменений, а не только их синтаксис.

Источники

  • Ларри Маквой, «BitKeeper: A Distributed Version Control System», 2000.
  • Линус Торвальдс, «The Linux Kernel Development Process», 2005.
  • Документация BitKeeper, BitMover Inc., 2002–2016.
  • Статья «The Story of BitKeeper and Git» на сайте Linux Foundation, 2018.
  • Исходный код BitKeeper (лицензия Apache 2.0), 2018.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →