Презентация по VCS — различия между версиями
Материал из YourcmcWiki
м (→История Git и Hg) |
м (→Эмуляция централизации) |
||
Строка 173: | Строка 173: | ||
=== Эмуляция централизации === | === Эмуляция централизации === | ||
− | Можно работать с DVCS, как с централизованной! | + | Можно работать с DVCS, ''почти''{{red|*}} как с централизованной! |
<twopi> | <twopi> | ||
Строка 186: | Строка 186: | ||
} | } | ||
</twopi> | </twopi> | ||
+ | |||
+ | ----- | ||
+ | {{red|*}} Вынеся за скобки отсутствие пофайловости. | ||
== История VCS == | == История VCS == |
Версия 00:45, 1 июля 2012
- Практика
- Feature Branch
- SVN
- Mercurial
- Git
Содержание
Контроль версий
Зачем?
- История на случай утери кода
(или, скажем, инфицирования) - Неблокирующие совместные правки
- Code review
- Поддержка старых версий
Локальные VCS
Простейший вариант — архивы или папочки со старыми версиями.
(не надо так делать)
SCCS (1972), RCS (1985).
Diff, patch
- diff (1970) — подсчёт разницы между текстовыми файлами
- patch (1984) — применение этих разниц — патчей
- Автор — Лэрри Уолл (он же создатель Perl’а)
Централизованные VCS
- История версий хранится на центральном сервере
- Рабочие копии создаются на компьютерах разработчиков
CVS (1990), Subversion (2000).
Распределённые VCS
- Каждая копия содержит всю историю ревизий
- Возможен обмен между любыми участниками
- Лёгкость ветвления и слияния
TLA (2001); Monotone, Darcs (2003); Git, Mercurial (2005); Bazaar (2007).
Пример ветвления — Feature Branches
Смысл: каждая доработка в отдельной ветке.
Дерево доверия
Можно понимать как репозитории, можно — как ветки.
Эмуляция централизации
Можно работать с DVCS, почти* как с централизованной!
* Вынеся за скобки отсутствие пофайловости.
История VCS
…по большей части свободных.
История Git и Hg
- В 2000—2005 для ядра Linux использовался BitKeeper
- Анекдотичный «реверс-инжиниринг» привёл к отзыву бесплатной лицензии
- Monotone уже был, но дико медленный
Терминология
- Ревизия
- одна версия проекта или файла.
- Метка, тег (tag)
- символьное имя какой-либо версии проекта.
- Ветка (branch)
- почти то же самое, но ей метится множество версий.
- trunk (svn), HEAD (cvs), master (git), mainline (bazaar)
- основная ветка.
- Репозиторий
- хранилище версий.
- Рабочая копия, work copy
- копия проекта, привязанная к какому-то репозиторию.
- Коммит, фиксация, checkin, commit
- отправка изменений в репозиторий.
- Чекаут (checkout)
- получение версии из репозитория.
- Конфликты
- внесённые в одну версию разные изменения одних и тех же частей кода.
- Патч
- различия между файлами, пригодные к применению в автоматическом режиме.