Git исполнилось 20 лет

7 апреля 2005 года состоялся первый выпуск распределённой системы управления версиями под названием Git, созданной Линусом Торвальдсом за несколько недель для управления разработкой ядра Linux вместо BitKeeper, так как никакая другая система контроля исходного кода не удовлетворяла требованиям в плане распределённости ресурсов. Теперь этот проект значительно вырос и ему исполнилось 20 лет.

Публикация на Хабре «Десять лет Git: интервью с создателем — Линус Торвальдс».

Разработка проекта Git была инициирована Линусом Торвальдсом в 2005 году, после того, как компания BitMover разорвала договорённость о предоставлении бесплатного доступа к системе управления версиями BitKeeper, которая использовалась в разработке ядра Linux вплоть до выпуска 2.6.11. Конфликт возник после отказа лаборатории OSDL прекратить разработку открытого инструментария, позволяющего напрямую работать с репозиториями BitKeeper, что нарушало изначальное соглашение между разработчиками ядра и компанией BitMover.

После прекращения возможности использования BitKeeper Линус Торвальдс попытался найти подходящую для разработки ядра систему контроля версий, и склонялся к переходу на monotone. Но в итоге все существующие системы его не устроили и было принято решение создать собственную распределённую систему управления исходными текстами, изначально отвечающую всем требованиям разработчиков ядра. За считанные недели был написан первый прототип, состоящий примерно из 1000 строк кода на языке C. Далее в проекте появились git log и git rebase.

В декабре 2005 года состоялся выпуск формального стабильного релиза системы управления исходными текстами и патчами GIT 1.0.0, на базе которого организована разработка Linux ядра. За восемь месяцев прошедших после прекращения использования BitKeeper, Git превратился из наспех созданной утилиты (1000 строк на C) в специализированный инструмент разработки Linux ядра. Для сравнения git-0.01.tar.gz занимал 40 КБ, а git-1.0.0.tar.gz в 13 раз больше — 556KБ. В составе Git первых версий встречались части написанные на C, Shell, Perl и Python.

Важно понимать, что именно для этого был создан Git. Не для того, чтобы быть системой контроля версий, а, по сути, для того, чтобы быть лучшим способом делать патчи и тарболы (tarball) — делать снимок набора файлов и показывать различия, которые можно обсудить. В первую очередь, именно так была спроектирована его структура данных (связанные списки деревьев файлов, хранилище BLOB-объектов с адресацией по содержимому), и эта структура принципиально не изменилась с первого коммита и по сей день.

«Это тупой (но чрезвычайно быстрый) менеджер контента каталога. Он не делает многого, но эффективно отслеживает содержимое каталога», — написал Торвальс в первом коммите проекта. Этот коммит представлял собой набор из семи простых автономных инструментов. Причём это были не такие вещи, как git commit, а очень низкоуровневые инструменты для работы с базами данных, такие как write-tree и commit-tree (это изменилось через несколько недель после начала проекта, когда все стало иметь префикс git-). Некоторые из них превратились в рабочие команды, которые существуют и по сей день, например, git cat-file и git write-tree, другие были принципиально иными (например, git read-tree — это текущая команда Git, но исходная read-tree была больше похожа на текущую git ls-files), однако на низком уровне все концепции существуют до сих пор.

С самых первых дней запуска проекта Торвальдс упоминает, что он на самом деле хотел только построить эту инфраструктуру и сделать её бэкендом для некоторого пользовательского интерфейса, который будет написан поверх неё. «Это было действительно то, что я всегда лично видел в „git“, просто инфраструктура под поверхностью. Например, что‑то вроде arch, которое основано на „патчах и tar‑balls“ (я думаю, darcs похож в этом отношении), может использовать git как чертовски лучшую „историю tar‑balls“», — написал Торвальдс.

В настоящее время большинство открытых проектов используют в процессе разработки Git, в том числе ядро Linux, Android, LibreOffice, Systemd X.Org, Wayland, Mesa, Gstreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Xen, Minix и десятки тысяч других решений на базе веб-фронтендов, в числе которых — GitWebAdmin, GitLab, Gitblit, Gerrit, Gitweb, Kallithea, Gitea.

В середине марта 2025 года вышла версия 2.49 распределённой системы управления версиями Git. «Этот выпуск знаменует собой важную веху в проекте Git, поскольку в него были добавлены первые фрагменты кода Rust. В частности, в этом выпуске представлены два крейта Rust: libgit‑sys и libgit, которые являются низкоуровневыми и высокоуровневыми обёртками вокруг небольшой части кода библиотеки Git соответственно. Проект Git уже давно развивает свой код, делая его более ориентированным на библиотеки, выполняя такие действия, как замена функций, которые выходят из программы, на функции, которые возвращают целое число и позволяют вызывающему объекту решить, следует ли отработать exit, или провести очистку утечек памяти. В новом выпуске используется преимущества работы для предоставления экспериментального контейнера Rust, который оборачивает часть API config.h Git. Это не полнофункциональная оболочка вокруг всего интерфейса библиотеки Git, и в проекте ещё многое предстоит сделать, прежде чем это станет реальностью, но это очень захватывающий шаг на этом пути», — пояснили в команде разработки Git.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии