86
«Собор или базар»: системы контроля версий — централизованные или распределенные? Стас Фомин, [email protected] Заказные ИнформСистемы 29 октября 2009 г. 1 / 86

«Собор или базар»: системы контроля версий — централизованные или распределенные?

Embed Size (px)

DESCRIPTION

«Собор или базар»: системы контроля версий — централизованные или распределенные? Слайды к одноименному докладу на SECR-2009.

Citation preview

Page 1: «Собор или базар»: системы контроля версий — централизованные или распределенные?

«Собор или базар»: системы контроляверсий — централизованные или

распределенные?

Стас Фомин, [email protected]

Заказные ИнформСистемы

29 октября 2009 г.

1 / 86

Page 2: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Version Control System/Revision Control System

ПО для работы с изменяемымиинформационными объектами:

хранение версий программных артефактов:I программных кодов;I документов и документации в целом;I моделей САПР.

мгновенный доступ к любой версии;обеспечение совместной работы команды.

2 / 86

Page 3: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

3 / 86

Page 4: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

Однопользовательские Многопользовательские

4 / 86

Page 5: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Однопользовательские

ComputerCreated by Andrew Fitzsimonсоздать проект1

2 запись изменений

3 просмотр истории

4 выпуск версий

5 / 86

Page 6: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

Однопользовательские Многопользовательские

6 / 86

Page 7: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

Однопользовательские Многопользовательские

Не актуальны!

7 / 86

Page 8: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

Однопользовательские Многопользовательские

Не актуальны! Централизованные (СVCS) Распределенные (DVCS)

8 / 86

Page 9: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Классы систем управления версиями

Системы управления версиями

Однопользовательские Многопользовательские

Не актуальны! Централизованные (СVCS) Распределенные (DVCS)

Наша тема!

9 / 86

Page 10: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Миниглоссарий СУВ

repository Хранилище документов — место, где системауправления версиями хранит все документы вместе систорией их изменения и другой служебнойинформацией.

revision Версия документа. СУВ различают версии пономерам/меткам, которые назначаютсяавтоматически.

workspace Рабочая/локальная копия документов (working copy).

10 / 86

Page 11: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Репозиторий

Repository

11 / 86

Page 12: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Репозиторий

RepositoryWorkspace 1: c:\projects\supercode

12 / 86

Page 13: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Рабочая станция «B» (Linux)Репозиторий

Repository

Workspace 1: c:\projects\supercode

Workspace 4: /usr/share/supercode

13 / 86

Page 14: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Рабочая станция «B» (Linux)

Репозиторий

Repository

Workspace 1: c:\projects\supercode

Workspace 4: /usr/share/supercode

Workspace 2: c:\projects\bugfixes

14 / 86

Page 15: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Рабочая станция «B» (Linux)

Репозиторий

Repository

Workspace 1: c:\projects\supercode

Workspace 4: /usr/share/supercode

Workspace 2: c:\projects\bugfixes

Workspace 3: c:\projects\experimental

15 / 86

Page 16: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Рабочая станция «B» (Linux)

Репозиторий

Repository

Workspace 1: c:\projects\supercode

Workspace 4: /usr/share/supercode

Workspace 2: c:\projects\bugfixes

Workspace 3: c:\projects\experimental

Workspace 5: /usr/share/test-supercode

16 / 86

Page 17: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованный Repository и Workspaces

Рабочая станция «A» (Windows)

Рабочая станция «B» (Linux)

Рабочая станция «C» (Mac OS)

Репозиторий

Repository

Workspace 1: c:\projects\supercode

Workspace 4: /usr/share/supercode

Workspace 2: c:\projects\bugfixes

Workspace 3: c:\projects\experimental

Workspace 5: /usr/share/test-supercode

Workspace 6

17 / 86

Page 18: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Базовые операции CVCS

checkout Извлечение данных из хранилища исоздание рабочей копии. Возможно заказать

определенные версий.

update Обновление рабочей копии изрепозитория. Можно переключится на другие

версии.

commit Создание новой версии, публикацияизменений. Распространение изменений, сделанных

в рабочей копии, на репозиторий. В хранилище создаётся

новая версия. 18 / 86

Page 19: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Централизованные системыПривычная всем схема!

ComputerCreated by Andrew Fitzsimon

ComputerCreated by Andrew Fitzsimon

Server

checkout1

2 update

3 commit

19 / 86

Page 20: «Собор или базар»: системы контроля версий — централизованные или распределенные?

В CVCS версии линейно растут

20 / 86

Page 21: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Ветки и метки

branch Ветки — параллельные процессы эволюции кода.Одинаковая историю до точки ветвления и разная —после неё. Например, удобно держать отдельныеветки для учета багов в выпущенных версиях илипроверки экспериментальных идей. Сливают веткимежду собой, или с основным стволом разработки.

tag Метка — символическое имя для версии.Замороженная ветка.

1

2 3

4

6

7 8

9 11 15 16

10 12 14

5 13Trunks

Branches

Merges

Tags

Discontinueddevelopment branch

21 / 86

Page 22: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Базовые операции DVCS

Принцип Хоттабыча — каждому по репозиторию!

commit Фиксация новой версии в своем репозитарии.pull Загрузка изменений от кого-то в отдельную ветку.

push Передача изменений кому-то в отдельную ветку.merge Слияние изменений из двух веток.branch Ветвление репозитория.

22 / 86

Page 23: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Распределенные системы — швейцарский ножМожно работать в одиночку без серверов!

ComputerCreated by Andrew Fitzsimonсоздать проект1

2 запись изменений

3 просмотр истории

4 выпуск версий

23 / 86

Page 24: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Распределенные системы — швейцарский ножМожно по старинке — с центральным сервером!

ComputerCreated by Andrew Fitzsimon

ComputerCreated by Andrew Fitzsimon

Server

checkout1

2 update

3 commit

24 / 86

Page 25: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Распределенные системы — швейцарский ножМожно без центрального сервера — произвольная схема обменаизменениями!

ComputerCreated by Andrew FitzsimonComputer

Created by Andrew Fitzsimon

клонирование-ветвление2

4слияние измененийс товарищем

1 запуск проект

3фиксируемыеправки

4слияние измененийс товарищем

3фиксируемыеправки

25 / 86

Page 26: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Распределенные системы — швейцарский ножМожно с центральным сервером, с локальными фиксациями иветками, и отдельной стратегией публикации и слияний.

ComputerCreated by Andrew Fitzsimon

ComputerCreated by Andrew Fitzsimon

Server

branch1

2 pullmerge

3 commit

основной ствол

локальные ветки

26 / 86

Page 27: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

27 / 86

Page 28: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

28 / 86

Page 29: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

29 / 86

Page 30: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

30 / 86

Page 31: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

31 / 86

Page 32: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

32 / 86

Page 33: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

33 / 86

Page 34: «Собор или базар»: системы контроля версий — централизованные или распределенные?

История управления конфигурациями

1970 Исследования Leon Pressor (ВПК), появился «make».1972 Bell Labs: алгоритм «diff», первая система

контроля версий «SCCS».1980 «RCS» (Revision Control System), утилита «patch».1986 «CVS» (Concurrent Version System), первая

распределенная СУВ.2000 CollabNet — начало работ над «Subversion».200x появились работоспособные распределенные СУВ:

«BitKeeper», «GNU arch».2009 Разборки между лидерами: SVN, GIT, Mercurial.

Но еще много legacy-систем, например CVS.

34 / 86

Page 35: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972

35 / 86

Page 36: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

36 / 86

Page 37: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980 CVCS

37 / 86

Page 38: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980 CVCS CVS:1985

38 / 86

Page 39: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980 CVCS CVS:1985 CVSNT:1998

39 / 86

Page 40: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980 CVCS CVS:1985

CVSNT:1998

SVN:2000

40 / 86

Page 41: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Проблемы CVS решенные в SVN

+ Каталоги+ Транзакции+ Модификации имён файлов+ Метаданные (Свойства/properties)+ Блокировки+ Эффективность клиент-серверного обмена+ Эффективность хранения двоичных файлов+ Эффективность создания ветвей и меток+ Эффективность использования памяти сервера

41 / 86

Page 42: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980 CVCS CVS:1985

CVSNT:1998

SVN:2000

42 / 86

Page 43: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

43 / 86

Page 44: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

44 / 86

Page 45: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

45 / 86

Page 46: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

46 / 86

Page 47: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

GIT:2005

47 / 86

Page 48: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

GIT:2005

Mercurial:2005

48 / 86

Page 49: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

Bazaar:2005

GIT:2005

Mercurial:2005

49 / 86

Page 50: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

Bazaar:2005

GIT:2005

Mercurial:2005

50 / 86

Page 51: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

Bazaar:2005

GIT:2005

Mercurial:2005

51 / 86

Page 52: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Эволюция систем контроля версий

SCCS:1972 RCS:1980

CVCS

DVCS

CVS:1985

CVSNT:1998

SVN:2000

arch:2001-2007

Monotone:200x

BitKeeper:2001

Darcs:2003-2007

Bazaar:2005

GIT:2005

Mercurial:2005

52 / 86

Page 53: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Subversion — венец централизованных СУВ

The Forrester WaveTM: Software Change And ConfigurationManagement, Q2 2007 IBM Is The Unified SCCM Front-Runner,Subversion Leads On Standalone SCM.

Source: Forrester Research, Inc.

Go online to download

the Forrester Wave tool

for more detailed product

evaluations, feature

comparisons, and

customizable rankings.

RiskysredaeLsrednetnoCsteB

StrongPerformers

StrategyWeak Strong

Currento�ering

Weak

Strong

Market presence

Full vendor participation

Incomplete vendor participation

Subversion

IBM

BorlandSoftwareSerena Dimensions

MicrosoftAccuRev

CA Telelogic

MKSPerforce

Serena PVCS

41388 53 / 86

Page 54: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Опрос на порталеhabrahabr.ru

26-27 октября2009

54 / 86

Page 55: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Опрос на порталеhabrahabr.ru

26-27 октября2009

55 / 86

Page 56: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Опрос на порталеhabrahabr.ru

26-27 октября2009

56 / 86

Page 57: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Опрос на порталеhabrahabr.ru

26-27 октября2009?

57 / 86

Page 58: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

58 / 86

Page 59: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Линус Торвальдс:Когда я сказал, что страстно ненавижу CVS, я должен такжесказать, что если в аудитории есть пользователи SVN, то вы,возможно, захотите уйти. Поскольку моя ненависть к CVSозначает, что я считаю Subversion самым бесцельным проектом,так как основной девиз Subversion некоторое время был«Сделанный по-уму CVS» или что-то вроде этого. А если выначинаете с такого слогана, то вы никуда не сможете прийти. Этотак, потому что CVS невозможно сделать «правильным».

59 / 86

Page 60: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Линус Торвальдс:А сейчас я рассказываю свое единственно правильное мнение,так что пользователи CVS, если вы действительно его таклюбите, уйдите с глаз моих долой. Вам надо обратиться впсихушку или куда-то еще.Поэтому, например, я Subversion даже трехметровым багромтрогать не буду. В Subversion большой репозиторий, куда всеобязаны складывать свои данные. А централизованная модельпросто не работает, когда. . . давайте взглянем на некоторыетакие случаи.

60 / 86

Page 61: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Ben Collins-Sussman:. . . Смотрите, что хочет сделать этот счастливчик — уползти впещеру, неделями в одиночку корпеть над сложнойфункциональностью, а затем воткнуть «вылизанное» решение в«основной ствол» проекта. . .В нашем Subversion-сообществе такое поведение мы именуем«сбрасывание бомбы» . . .

61 / 86

Page 62: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Линус Торвальдс:Ветки полностью бесполезны, если Вы не объединяете их, а CVSне может объединить вообще ничего. Вы можете слитьизменения однажды, но тогда CVS забывает то, что вы сделали,и вы никогда не сможете объединять снова, не получая адскиеконфликты. Слияния в Subversion — полная беда. . . .Невероятно, насколько эти люди глупы. Они все время смотрелина проблему неверно. Проблема-то не в ветвлении, а в слиянии!

1

2 3

4

6

7 8

9 11 15 16

10 12 14

5 13Trunks

Branches

Merges

Tags

Discontinueddevelopment branch

62 / 86

Page 63: «Собор или базар»: системы контроля версий — централизованные или распределенные?

63 / 86

Page 64: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Ben Collins-Sussman:Итак, есть два «класса» программистов-разработчиков, назовемих «20%» и «80%». основная движущая сила индустриипрограммного обеспечения — это «80%»-ные парни. . . . Ихзнаний в точности достаточно, чтобы сделать свою работу, затемпойти домой на выходные и забыть о компьютерах. . . .Жуткая правда №1 — Основной объем . . . ПО — создаетсявышеупомянутыми «80%» программистов.Жуткая правда №2 — Большинство «альфа-гиков» забывают«жуткую правду №1».

64 / 86

Page 65: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Ben Collins-Sussman:Большинство из 80% кодеров даже в TortoiseSVN обнаруживаюткучу «новых и интригующих» концепций, таких как «update» и«commit».Им вообще трудно использовать контроль версий, а высобираетесь объяснять им разницу между «pull» и «update», имежду «commit» и «push»? Собираетесь? Смотрите мне в глазаи попробуйте еще раз повторить это c серьезной мордой лица.

65 / 86

Page 66: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Война DVCS vs. CVCS!

Линус Торвальдс:Например, я думаю, что большинство из вас полностьюнекомпетентны.Основной принцип распределенности — это то, что я не долженвам доверять. Я не должен давать вам доступ к коммитам. . . .Мне нужно доверять только 5, 10, ну может 15 людям. Если уменя есть доверенная сеть, в которую входят эти 5/10/15выдающихся человек, и я знаю, что они выдающиеся, я могузабирать новый код у них. И мне не надо париться на эту тему.

66 / 86

Page 67: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

67 / 86

Page 68: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

Лейтенант 1 (USB)pull

Лейтенант 2 (Сеть)

pull

Лейтенант 3 (Память)

pull

68 / 86

Page 69: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

Лейтенант 1 (USB)pull

Лейтенант 2 (Сеть)

pull

Лейтенант 3 (Память)

pull

Доверенный 1/1pull

Доверенный 1/2

pull

Доверенный 1/3

pull

69 / 86

Page 70: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

Лейтенант 1 (USB)

pull

Лейтенант 2 (Сеть)

pull

Лейтенант 3 (Память)

pull

Доверенный 1/1

pull

Доверенный 1/2pull

Доверенный 1/3

pull

Доверенный 2/1pull

Доверенный 2/2

pull

Доверенный 2/3

pull

70 / 86

Page 71: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

Лейтенант 1 (USB)

pull

Лейтенант 2 (Сеть)

pull

Лейтенант 3 (Память)

pull

Доверенный 1/1

pull

Доверенный 1/2pull

Доверенный 1/3

pull

Доверенный 2/1pull

Доверенный 2/2

pull

Доверенный 2/3

pull

Доверенный 3/1pull

Доверенный 3/2

pull

Доверенный 3/3

pull

71 / 86

Page 72: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Интеграция Ядра Линукса

Линус

Лейтенант 1 (USB)

pull

Лейтенант 2 (Сеть)

pull

Лейтенант 3 (Память)

pull

Доверенный 1/1

pull

Доверенный 1/2pull

Доверенный 1/3

pull

Доверенный 2/1pull

Доверенный 2/2

pull

Доверенный 2/3

pull

Доверенный 3/1pull

Доверенный 3/2

pull

Доверенный 3/3

pull

72 / 86

Page 73: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Базар! Надо себя «продавать»!

73 / 86

Page 74: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Собор или Базар?

74 / 86

Page 75: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Плюсы DVCS

+ Работа оффлайн+ Очень быстро коммитить+ Очень быстро копаться в истории+ Один пользователь/много машин

(«конфигурации»)+ Поддержка шизофрении полифонии веток с

легкими слияниями

75 / 86

Page 76: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Минусы DVCS

− Нельзя ограничить доступ на чтение− Нельзя работать с частью репозитория− Большие репозитарии («начальное клонирование»)− Нет блокировки бинарников для целостности− «Кодовые бомбы»− Трудно контролировать! Нет единой шкалы версий!− Отстает интеграция с IDE, поисковыми и вебсистемами.− Непросто с практикой Continuous Integration

76 / 86

Page 77: «Собор или базар»: системы контроля версий — централизованные или распределенные?

DVCS & CI — OK

77 / 86

Page 78: «Собор или базар»: системы контроля версий — централизованные или распределенные?

DVCS & CI — NOT OK

78 / 86

Page 79: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Минусы СVCS

− Скорость слияний и коммитов зависит отсети

− Невозможна работа оффлайн− Жалко тратить общий репозиторий под

[жирную] фигню.− Нет легких слияний!

79 / 86

Page 80: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Плюсы СVCS (SVN)

+ OK с бинарниками (блокировки).+ Идеально для Continuous Integration+ Максимальная известность и понятность.+ Идеально для мониторинга, code-review,

контроля (ViewVC).+ Матерая — интеграция со всем. Полно

ништяков!+ SVNSearcher — полнотекстовый поиск —

база знаний!80 / 86

Page 81: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Что выбрать?

Наш ответ на сегодня:

Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:

I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!

и запретить отбиваться от коллектива.

1эта презентация сделана с использованием bzr-svn

81 / 86

Page 82: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Что выбрать?

Наш ответ на сегодня:

Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:

I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!

и запретить отбиваться от коллектива.

1эта презентация сделана с использованием bzr-svn

82 / 86

Page 83: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Что выбрать?

Наш ответ на сегодня:

Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:

I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!

и запретить отбиваться от коллектива.

1эта презентация сделана с использованием bzr-svn

83 / 86

Page 84: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Что выбрать?

Наш ответ на сегодня:

Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:

I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!

и запретить отбиваться от коллектива.

1эта презентация сделана с использованием bzr-svn

84 / 86

Page 85: «Собор или базар»: системы контроля версий — централизованные или распределенные?

В любом случае, посадите вашихтехнологов изучать DVCS.

The time is now!

85 / 86

Page 86: «Собор или базар»: системы контроля версий — централизованные или распределенные?

Наши переводы статей о системахконтроля версий:

lib.custis.ru/index.php/VCSs

Наши семинары по эффективнойразработке:

team.custis.ru

ВАШИ ВОПРОСЫ?

86 / 86