Пересмотр боли: мир без Git’а


Введение

За короткий промежуток времени компьютеры сильно эволюционировали и продолжают быстро развиваться. С появлением технологий весь мир теперь у нас на кончиках пальцев. Наряду с этими достижениями в области аппаратного обеспечения, разработка программного обеспечения также значительно продвинулась вперед. И когда мы говорим о разработке программного обеспечения, как можно забыть о Git?

Git – это единственная наиболее используемая система контроля версий (VCS). Git работает очень быстро, и кажется, что боги скорости благословили Git неземными силами. Если вы разработчик программного обеспечения, это ваш хлеб с маслом. Но Git был разработан в 2005 году (с бурными спорами), а программное обеспечение разрабатывается уже более 7 десятилетий. Итак, как выглядел мир разработки до появления Git.

Давайте окунемся в эту тему.

1) Локальное хранение резервных копий

На ранних этапах разработки программного обеспечения не существовало системы контроля версий. Ежедневное или еженедельное резервное копирование было нормой.

Для совместного проекта обычно существовала мастер-копия, которая обычно находилась под контролем одного человека. Все работали с этим человеком.
В те времена Commit означал резервное копирование текущей версии и применение новых изменений.

Это приводило к 2 основным проблемам:

1) Трудно было узнать, какие изменения вы внесли со временем. Не было другого варианта, кроме как вручную проверять файлы на наличие различий.

2) Со временем файлы становились настолько большими, что их количество могло занять весь диск.

2) Локальный VCS (LVCS)

Все задачи без VCS были утомительными. Это требовало больших усилий от команды разработчиков и руководителей проекта. Чтобы решить эту проблему, программисты разработали Local VCS. Их также называют “VCS первого поколения”.

Как следует из названия, они имели локальную базу данных для хранения изменений, вносимых в файлы. Одной из самых популярных локальных VCS была “RCS(Revision Control System)”, которая хранила наборы исправлений и могла воспроизвести внешний вид файла в любой момент времени путем слияния этих наборов исправлений.

Другой популярной локальной VCS первого поколения была “SCCS” или система контроля исходного кода, которая действительно была первой VCS, разработанной в 1972 году разработчиками UNIX.

3) Централизованные ВКС (CVCS)

Локальные VCS были хороши или, по крайней мере, лучше, чем поддержание резервных копий, но даже у них была проблема. Все хранилось локально. В случае, если система рушилась и не было резервной копии, вы теряли все. Кроме того, не было никакого способа сотрудничать с другими разработчиками.

Чтобы решить эту проблему, были разработаны централизованные VCS. Это были ВКС “второго поколения”.

Здесь у нас был центральный сервер, который содержал все версии и коммиты, когда-либо внесенные в проект. Каждый мог нажимать и вытаскивать изменения. Поскольку сервер был централизованным, почти каждый знал, над чем работает другой человек.

Наряду со всеми этими плюсами у CVCS были и минусы:

1) Поскольку все было централизовано, если произойдет сбой сервера или жесткий диск сервера будет поврежден, вы потеряете все (если нет резервных копий). Вы можете получить последнюю версию проекта от разработчика, который внес последнее изменение, но все предыдущие изменения исчезнут.

2) Кроме того, из-за централизованного сервера вам необходимо иметь подключение к Интернету, если вы хотите зафиксировать свои изменения. Поэтому, если вы работаете в месте, где нет интернета, у вас могут возникнуть проблемы.

Примерами VCS второго поколения являются “Apache Subversion(SVN)”, “CVS” и “Perforce”.

4) Распределенные ВКС (DVCS)

Все, что было раньше, имело свои плюсы и минусы. Но возникла потребность в чем-то лучшем, и тогда появилась распределенная VCS. Ее также называли “VCS третьего поколения”.

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

Примерами VCS третьего поколения являются “Git”, “Mercurial”, “Bitkeeper” и “bzr”.

Краткая история GIT

Разработка Linux началась в 1991 году. До 2002 года изменения передавались в виде патчей и архивных файлов. Это было очень сложно для разработчиков, учитывая масштабы проекта.

Поэтому, наконец, в 2002 году они начали использовать “Bitkeeper VCS”, который в то время был бесплатным. Все было хорошо, и разработка Linux шла гладко до 2005 года, когда владелец авторских прав Bitkeeper Ларри Маквой отозвал статус free-of-charge после того, как заявил, что Эндрю Триджелл создал Sourcepuller путем реинжиниринга протоколов Bitkeeper.

В это время Линус Торвальдс, создатель Linux, задумался о разработке собственной распределенной ВКС с необходимыми функциями. Разработка Git началась 3 апреля 2005 года и достигла своих целей по производительности 29 апреля 2005 года.

Это привело к созданию самой используемой VCS в мире разработки программного обеспечения.

Кредиты

Изображения: Pro Git

Ссылки

Электронная книга Pro Git: https://git-scm.com/book/en/v2
Википедия: https://en.wikipedia.org/wiki/Git

Оцените статью
Procodings.ru
Добавить комментарий