Найти тему
Легко в’IT

VCS: Система контроля версий

Источник изображения: https://www.thatcompany.com
Источник изображения: https://www.thatcompany.com

Система контроля версий. Звучит страшно. Но давай разберемся, что это такое.

Представь, ты создаешь многостраничный документ, с красивым форматированием, с тонной важной информации и сохраняешь его где-то на общем пространстве с коллегами. А твой коллега открывает этот документ ночью и засыпает, нажав ухом на Backspace. Да еще и ворочается на клавиатуре так, что сохраняет и закрывает твой документ. Твоя реакция на утро?

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

Давай разберемся как происходит работа, на самом деле, эта штука удобна не только для программирования, с VCS (Version Control System):

  1. Ты скачиваешь все последние изменения из репозитория (так называемый pull request)
  2. Меняешь, что надо, удостоверяешься, что программа работает
  3. Сохраняешь пачку изменений на своей локальной версии репозитория (commit)
  4. Отправляешь измененные файлы в репозиторий (push request)

В конце может появиться еще один пункт, если кто-то успел изменить тот же файл одновременно с тобой, но тогда надо будет решать так называемый “конфликт версий”. То есть, как сохранить одновременно и те и другие изменения.

Самых популярных систем контроля версий всего три: Subversion (SVN), Git и Mercurial. В рамках данного материала их различия не видны, но одно из главных, что Subversion - централизованная, то есть есть только один общий репозиторий, а Mercurial и Git - децентрализованные, то есть у каждого на компьютере по своему репозиторию. Тут надо думать, в зависимости от ситуации: что нужно получить, но в любом случае это уже нюансы. Моя задача - дать общее понимание, так что и эту тему позволь считать закрытой как минимум в общем смысле термина.

#vcs #git #svn