Презентация по 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).

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