Skip to content

Latest commit

 

History

History
57 lines (34 loc) · 5.8 KB

what-is-vcs.md

File metadata and controls

57 lines (34 loc) · 5.8 KB

Что такое система контроля версий

Представим, что мы работаем над проектом To-Do List (список дел).

Скачать пример проекта

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

Получается, нам нужно как-нибудь хранить историю изменений проекта.

Первое, что приходит в голову - периодически создавать копию папки проекта, добавляя порядковый номер копии. Например, наш проект называется . В папке с этим названием хранится актуальная версия проекта. Периодически мы создаем копию этой папки: To-Do List 1, To-Do List 2, To-Do List 3. Номера 1, 2, 3, ..., N - это версии проекта. Теперь при необходимости мы можем посмотреть, что было в старых версиях проекта и вернуться к старой версии, заменив актуальную папку нужной версией.

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

  • To-Do List 10-04-2022 13:25
  • To-Do List 11-04-2022 17:51

В процессе работы стало понятно, что нужно еще понимать, какие изменения были сделаны в конкретной версии. Создадим простой текстовый файл changelog.txt (changelog - история изменений) и будем записывать, какие изменения были сделаны:

10-04-2022 13:25 - Исправил баги
11-04-2022 17:51 - Добавил возможность поиска

Каждая такая копия фиксирует определенное состояние проекта (обратите на это внимание, в будущем нам это понадобится).

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

10-04-2022 13:25 - Исправил баги (Muhammad Imangazaliev)
11-04-2022 17:51 - Добавил возможность поиска (Makhach Imangazaliev)

Итак, мы построили систему хранения версий проекта, которая позволяет:

  • Откатиться к нужной версии
  • Узнать, когда и кем были сделаны изменения
  • Понять, какие изменения были сделаны

Какие проблемы при этом есть:

  • Мы должны помнить о необходимость периодического создания новых версий. Если делать это редко - последняя сохраненная версия будет слишком старой и в случае необходимости откатиться мы потеряем множество изменений.
  • Копии проекта занимают место и если проект большой, в скором времени свободного пространства на диске может не остаться. Нужно также не забывать удалять старые версии, чтобы избежать этого.
  • У нас нет возможности понять, какие именно файлы в каждой конкретной версии были изменены и что именно было в них изменено.
  • Нет возможности работать над проектом нескольким людям, которые находятся на удалении друг от друга.

Чтобы автоматизировать всю работу были разработаны специальная программы - системы управления версиями или системы контроля версий.

Итак, система контроля версий (англ. version control system, VCS) - это система, обеспечивающая сохранение истории изменений файлов проекта.

← Введение | Установка Git →