Презентация по VCS — различия между версиями
Материал из YourcmcWiki
м |
м |
||
Строка 7: | Строка 7: | ||
** Git | ** Git | ||
− | == Контроль версий == | + | == Контроль версий @@ == |
Зачем? | Зачем? | ||
Строка 16: | Строка 16: | ||
* Поддержка старых версий | * Поддержка старых версий | ||
− | == Локальные VCS == | + | == Локальные VCS @@ == |
Простейший вариант — архивы или папочки со старыми версиями.<br /> | Простейший вариант — архивы или папочки со старыми версиями.<br /> | ||
Строка 48: | Строка 48: | ||
</graph> | </graph> | ||
− | == Diff, patch == | + | == Diff, patch @@ == |
[[File:Diff-screenshot.png|right|200px]] | [[File:Diff-screenshot.png|right|200px]] | ||
Строка 59: | Строка 59: | ||
<div style="clear: both"></div> | <div style="clear: both"></div> | ||
− | == Централизованные VCS == | + | == Централизованные VCS @@ == |
* История версий хранится на центральном сервере | * История версий хранится на центральном сервере | ||
Строка 105: | Строка 105: | ||
</graph> | </graph> | ||
− | == Распределённые VCS == | + | == Распределённые VCS @@ == |
* Каждая копия содержит всю историю ревизий | * Каждая копия содержит всю историю ревизий | ||
Строка 138: | Строка 138: | ||
[[Файл:TN-IShop-Revision-Graph.svg]] | [[Файл:TN-IShop-Revision-Graph.svg]] | ||
− | === Дерево доверия === | + | === Дерево доверия @@ === |
Можно понимать как репозитории, можно — как ветки. | Можно понимать как репозитории, можно — как ветки. | ||
Строка 173: | Строка 173: | ||
</graph> | </graph> | ||
− | === Эмуляция централизации === | + | === Эмуляция централизации @@ === |
Можно работать с DVCS, ''почти''{{red|*}} как с централизованной! | Можно работать с DVCS, ''почти''{{red|*}} как с централизованной! | ||
Строка 192: | Строка 192: | ||
{{red|*}} Вынеся за скобки отсутствие пофайловости. | {{red|*}} Вынеся за скобки отсутствие пофайловости. | ||
− | == История VCS == | + | == История VCS @@ == |
…по большей части свободных. | …по большей части свободных. | ||
Строка 238: | Строка 238: | ||
</graph> | </graph> | ||
− | === История Git и Hg === | + | === История Git и Hg @@ === |
[[File:Tux.svg|200px|right]] | [[File:Tux.svg|200px|right]] | ||
Строка 247: | Строка 247: | ||
<div style="clear:both"></div> | <div style="clear:both"></div> | ||
− | == Терминология == | + | == Терминология @@ == |
; Ревизия: одна версия проекта или файла. | ; Ревизия: одна версия проекта или файла. |
Версия 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)
- получение версии из репозитория.
- Конфликты
- внесённые в одну версию разные изменения одних и тех же частей кода.
- Патч
- различия между файлами, пригодные к применению в автоматическом режиме.