Презентация по VCS

Материал из YourcmcWiki
Перейти к: навигация, поиск
  • Практика
    • Feature Branch
    • SVN
    • Mercurial
    • Git

Контроль версий

Зачем?

  • История на случай утери кода
    (или, скажем, инфицирования)
  • Неблокирующие совместные правки
  • Code review
  • Поддержка старых версий

Локальные VCS

Простейший вариант — архивы или папочки со старыми версиями.
(не надо так делать)

SCCS (1972), RCS (1985).

[svg]

Diff, patch

Diff-screenshot.png

Централизованные VCS

  • История версий хранится на центральном сервере
  • Рабочие копии создаются на компьютерах разработчиков

CVS (1990), Subversion (2000).

Распределённые VCS

  • Каждая копия содержит всю историю ревизий
  • Возможен обмен между любыми участниками
  • Лёгкость ветвления и слияния

TLA (2001); Monotone, Darcs (2003); Git, Mercurial (2005); Bazaar (2007).

[svg]

Пример ветвления — Feature Branches

Смысл: каждая доработка в отдельной ветке.

TN-IShop-Revision-Graph.svg

Дерево доверия

Можно понимать как репозитории, можно — как ветки.

[svg]

Эмуляция централизации

Можно работать с DVCS, как с централизованной!

[svg]

История VCS

…по большей части свободных.

[svg]

История Git и Hg

Tux.svg
  • В 2000—2005 для ядра Linux использовался BitKeeper
  • Анекдотичный «реверс-инжиниринг» привёл к отзыву бесплатной лицензии
  • Monotone уже был, но дико медленный

Терминология

Ревизия
одна версия проекта или файла.
Метка, тег (tag)
символьное имя какой-либо версии проекта.
Ветка (branch)
почти то же самое, но ей метится множество версий.
trunk (svn), HEAD (cvs), master (git), mainline (bazaar)
основная ветка.
Репозиторий
хранилище версий.
Рабочая копия, work copy
копия проекта, привязанная к какому-то репозиторию.
Коммит, фиксация, checkin, commit
отправка изменений в репозиторий.
Чекаут (checkout)
получение версии из репозитория.
Конфликты
внесённые в одну версию разные изменения одних и тех же частей кода.
Патч
различия между файлами, пригодные к применению в автоматическом режиме.