Линус Торвальдс в сорокаминутном интервью инженеру-программисту GitHub Тейлору Блау рассказал о развитии проекта Git за 20 лет, своём вкладе в это решение и своих любимых командах в Git.
7 апреля 2005 года состоялся первый выпуск распределённой системы управления версиями под названием Git, созданной Линусом Торвальдсом за несколько недель для управления разработкой ядра Linux вместо BitKeeper, так как никакая другая система контроля исходного кода не удовлетворяла требованиям в плане распределённости ресурсов. Теперь этот проект значительно вырос и ему исполнилось 20 лет.
Торвальдс рассказал Блау об истоках проекта Git, вызванных лицензированием BitKeeper, который он использовал вплоть до выпуска 2.6.11 для разработки ядра Linux. Торвальдс пояснил, что его двумя приоритетами для Git были производительность и стабильность.
Торвальдс начал писать Git после четырех месяцев размышлений, а процесс написания первого выпуска занял около десяти дней. В это время Торвальдс сосредоточился на разработке Git, оставив разработку ядро на время. Работа над Git была проще, чем над ядром. Торвальдс считает, что Git поощряет простую и очевидную модель развития.
Git имеет несколько фундаментальных дизайнерских идей, что упрощает его разработку. Торвальдс сравнивает дизайн Git с философией Unix, где все процессы и файлы взаимосвязаны.
Git использует известный небезопасный алгоритм хеширования SHA-1 для проверки файлов, и он остается по умолчанию 20 лет спустя, хотя SHA-256 теперь является опцией. «Люди как бы думают, что использование хэшей SHA-1 было огромной ошибкой», — сказал Торвальдс. «Но для меня хэши SHA-1 никогда не были связаны с безопасностью. Они были связаны с поиском повреждений». Тем не менее Торвальдс сожалеет об использовании SHA-1, потому что это привело к пустой трате усилий и (в основном) «бессмысленной переработке».
Git оказался успешен. Согласно опросу Stack Overflow, 96,65% профессиональных разработчиков используют Git.
Несмотря на популярность проекта, Торвальдс рассказал, что Git был проектом типа «мне нужно сделать это, чтобы продолжать делать ядро», а не тем, который был важен для него сам по себе. Торвальдс поддерживал Git в течение четырех месяцев, а затем передал этот проект Джунио Хармано, теперь работающему в Google, который до сих пор поддерживает Git.
Git сделал то, что ему было нужно, в течение первого года, сказал Торвальдс, «а когда он сделал то, что мне было нужно, я потерял интерес к нему». Торвальдс описал себя как обычного пользователя Git, который в основном использует всего пять команд: git merge, git blame, git log, git commit и git pull — хотя позже в интервью он добавил, что также использует git status «довольно регулярно».
Каково будущее Git? Торвальдс — не тот человек, которого следует спрашивать. «Я не слежу за списком рассылки Git так часто, как раньше», — признался Торвальдс. Тем не менее, он считает, что у Git «очень сильный сетевой эффект», из-за чего его трудно вытеснить.
В декабре 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, в том числе ядро 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