Презентация по VCS — различия между версиями
Материал из YourcmcWiki
м |
м (→Пример ветвления — Feature Branches) |
||
Строка 132: | Строка 132: | ||
</graph> | </graph> | ||
− | === Пример ветвления — Feature Branches === | + | === Пример ветвления — Feature Branches @@ === |
Смысл: каждая доработка ''в отдельной ветке''. | Смысл: каждая доработка ''в отдельной ветке''. |
Версия 01:51, 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)
- получение версии из репозитория.
- Конфликты
- внесённые в одну версию разные изменения одних и тех же частей кода.
- Патч
- различия между файлами, пригодные к применению в автоматическом режиме.