Презентация по VCS — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
м (Пример ветвления — Feature Branches)
м
Строка 12: Строка 12:
  
 
* История на случай утери кода<br />(или, скажем, инфицирования)
 
* История на случай утери кода<br />(или, скажем, инфицирования)
 +
* Поиск виновного
 
* Неблокирующие совместные правки
 
* Неблокирующие совместные правки
 
* Code review
 
* Code review

Версия 12:32, 2 июля 2012

Автор

Виталий Филиппов
Дополнительный нижний колонтитул

Системы контроля версий
  • Практика
    • 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)
получение версии из репозитория.
Конфликты
внесённые в одну версию разные изменения одних и тех же частей кода.
Патч
различия между файлами, пригодные к применению в автоматическом режиме.