«Собор или базар»: системы контроля версий —...
DESCRIPTION
«Собор или базар»: системы контроля версий — централизованные или распределенные? Слайды к одноименному докладу на SECR-2009.TRANSCRIPT
![Page 1: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/1.jpg)
«Собор или базар»: системы контроляверсий — централизованные или
распределенные?
Стас Фомин, [email protected]
Заказные ИнформСистемы
29 октября 2009 г.
1 / 86
![Page 2: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/2.jpg)
Version Control System/Revision Control System
ПО для работы с изменяемымиинформационными объектами:
хранение версий программных артефактов:I программных кодов;I документов и документации в целом;I моделей САПР.
мгновенный доступ к любой версии;обеспечение совместной работы команды.
2 / 86
![Page 3: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/3.jpg)
Классы систем управления версиями
Системы управления версиями
3 / 86
![Page 4: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/4.jpg)
Классы систем управления версиями
Системы управления версиями
Однопользовательские Многопользовательские
4 / 86
![Page 5: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/5.jpg)
Однопользовательские
ComputerCreated by Andrew Fitzsimonсоздать проект1
2 запись изменений
3 просмотр истории
4 выпуск версий
5 / 86
![Page 6: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/6.jpg)
Классы систем управления версиями
Системы управления версиями
Однопользовательские Многопользовательские
6 / 86
![Page 7: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/7.jpg)
Классы систем управления версиями
Системы управления версиями
Однопользовательские Многопользовательские
Не актуальны!
7 / 86
![Page 8: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/8.jpg)
Классы систем управления версиями
Системы управления версиями
Однопользовательские Многопользовательские
Не актуальны! Централизованные (СVCS) Распределенные (DVCS)
8 / 86
![Page 9: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/9.jpg)
Классы систем управления версиями
Системы управления версиями
Однопользовательские Многопользовательские
Не актуальны! Централизованные (СVCS) Распределенные (DVCS)
Наша тема!
9 / 86
![Page 10: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/10.jpg)
Миниглоссарий СУВ
repository Хранилище документов — место, где системауправления версиями хранит все документы вместе систорией их изменения и другой служебнойинформацией.
revision Версия документа. СУВ различают версии пономерам/меткам, которые назначаютсяавтоматически.
workspace Рабочая/локальная копия документов (working copy).
10 / 86
![Page 11: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/11.jpg)
Централизованный Repository и Workspaces
Репозиторий
Repository
11 / 86
![Page 12: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/12.jpg)
Централизованный Repository и Workspaces
Рабочая станция «A» (Windows)
Репозиторий
RepositoryWorkspace 1: c:\projects\supercode
12 / 86
![Page 13: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/13.jpg)
Централизованный Repository и Workspaces
Рабочая станция «A» (Windows)
Рабочая станция «B» (Linux)Репозиторий
Repository
Workspace 1: c:\projects\supercode
Workspace 4: /usr/share/supercode
13 / 86
![Page 14: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/14.jpg)
Централизованный 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/15.jpg)
Централизованный 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/16.jpg)
Централизованный 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/17.jpg)
Централизованный 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/18.jpg)
Базовые операции CVCS
checkout Извлечение данных из хранилища исоздание рабочей копии. Возможно заказать
определенные версий.
update Обновление рабочей копии изрепозитория. Можно переключится на другие
версии.
commit Создание новой версии, публикацияизменений. Распространение изменений, сделанных
в рабочей копии, на репозиторий. В хранилище создаётся
новая версия. 18 / 86
![Page 19: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/19.jpg)
Централизованные системыПривычная всем схема!
ComputerCreated by Andrew Fitzsimon
ComputerCreated by Andrew Fitzsimon
Server
checkout1
2 update
3 commit
19 / 86
![Page 20: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/20.jpg)
В CVCS версии линейно растут
20 / 86
![Page 21: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/21.jpg)
Ветки и метки
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/22.jpg)
Базовые операции DVCS
Принцип Хоттабыча — каждому по репозиторию!
commit Фиксация новой версии в своем репозитарии.pull Загрузка изменений от кого-то в отдельную ветку.
push Передача изменений кому-то в отдельную ветку.merge Слияние изменений из двух веток.branch Ветвление репозитория.
22 / 86
![Page 23: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/23.jpg)
Распределенные системы — швейцарский ножМожно работать в одиночку без серверов!
ComputerCreated by Andrew Fitzsimonсоздать проект1
2 запись изменений
3 просмотр истории
4 выпуск версий
23 / 86
![Page 24: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/24.jpg)
Распределенные системы — швейцарский ножМожно по старинке — с центральным сервером!
ComputerCreated by Andrew Fitzsimon
ComputerCreated by Andrew Fitzsimon
Server
checkout1
2 update
3 commit
24 / 86
![Page 25: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/25.jpg)
Распределенные системы — швейцарский ножМожно без центрального сервера — произвольная схема обменаизменениями!
ComputerCreated by Andrew FitzsimonComputer
Created by Andrew Fitzsimon
клонирование-ветвление2
4слияние измененийс товарищем
1 запуск проект
3фиксируемыеправки
4слияние измененийс товарищем
3фиксируемыеправки
25 / 86
![Page 26: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/26.jpg)
Распределенные системы — швейцарский ножМожно с центральным сервером, с локальными фиксациями иветками, и отдельной стратегией публикации и слияний.
ComputerCreated by Andrew Fitzsimon
ComputerCreated by Andrew Fitzsimon
Server
branch1
2 pullmerge
3 commit
основной ствол
локальные ветки
26 / 86
![Page 27: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/27.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/28.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/29.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/30.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/31.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/32.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/33.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/34.jpg)
История управления конфигурациями
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/35.jpg)
Эволюция систем контроля версий
SCCS:1972
35 / 86
![Page 36: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/36.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980
36 / 86
![Page 37: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/37.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980 CVCS
37 / 86
![Page 38: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/38.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980 CVCS CVS:1985
38 / 86
![Page 39: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/39.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980 CVCS CVS:1985 CVSNT:1998
39 / 86
![Page 40: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/40.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980 CVCS CVS:1985
CVSNT:1998
SVN:2000
40 / 86
![Page 41: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/41.jpg)
Проблемы CVS решенные в SVN
+ Каталоги+ Транзакции+ Модификации имён файлов+ Метаданные (Свойства/properties)+ Блокировки+ Эффективность клиент-серверного обмена+ Эффективность хранения двоичных файлов+ Эффективность создания ветвей и меток+ Эффективность использования памяти сервера
41 / 86
![Page 42: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/42.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980 CVCS CVS:1985
CVSNT:1998
SVN:2000
42 / 86
![Page 43: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/43.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980
CVCS
DVCS
CVS:1985
CVSNT:1998
SVN:2000
43 / 86
![Page 44: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/44.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980
CVCS
DVCS
CVS:1985
CVSNT:1998
SVN:2000
arch:2001-2007
Monotone:200x
44 / 86
![Page 45: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/45.jpg)
Эволюция систем контроля версий
SCCS:1972 RCS:1980
CVCS
DVCS
CVS:1985
CVSNT:1998
SVN:2000
arch:2001-2007
Monotone:200x
BitKeeper:2001
45 / 86
![Page 46: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/46.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/47.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/48.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/49.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/50.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/51.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/52.jpg)
Эволюция систем контроля версий
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/53.jpg)
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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/54.jpg)
Опрос на порталеhabrahabr.ru
26-27 октября2009
54 / 86
![Page 55: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/55.jpg)
Опрос на порталеhabrahabr.ru
26-27 октября2009
55 / 86
![Page 56: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/56.jpg)
Опрос на порталеhabrahabr.ru
26-27 октября2009
56 / 86
![Page 57: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/57.jpg)
Опрос на порталеhabrahabr.ru
26-27 октября2009?
57 / 86
![Page 58: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/58.jpg)
Война DVCS vs. CVCS!
58 / 86
![Page 59: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/59.jpg)
Война DVCS vs. CVCS!
Линус Торвальдс:Когда я сказал, что страстно ненавижу CVS, я должен такжесказать, что если в аудитории есть пользователи SVN, то вы,возможно, захотите уйти. Поскольку моя ненависть к CVSозначает, что я считаю Subversion самым бесцельным проектом,так как основной девиз Subversion некоторое время был«Сделанный по-уму CVS» или что-то вроде этого. А если выначинаете с такого слогана, то вы никуда не сможете прийти. Этотак, потому что CVS невозможно сделать «правильным».
59 / 86
![Page 60: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/60.jpg)
Война DVCS vs. CVCS!
Линус Торвальдс:А сейчас я рассказываю свое единственно правильное мнение,так что пользователи CVS, если вы действительно его таклюбите, уйдите с глаз моих долой. Вам надо обратиться впсихушку или куда-то еще.Поэтому, например, я Subversion даже трехметровым багромтрогать не буду. В Subversion большой репозиторий, куда всеобязаны складывать свои данные. А централизованная модельпросто не работает, когда. . . давайте взглянем на некоторыетакие случаи.
60 / 86
![Page 61: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/61.jpg)
Война DVCS vs. CVCS!
Ben Collins-Sussman:. . . Смотрите, что хочет сделать этот счастливчик — уползти впещеру, неделями в одиночку корпеть над сложнойфункциональностью, а затем воткнуть «вылизанное» решение в«основной ствол» проекта. . .В нашем Subversion-сообществе такое поведение мы именуем«сбрасывание бомбы» . . .
61 / 86
![Page 62: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/62.jpg)
Война 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/63.jpg)
63 / 86
![Page 64: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/64.jpg)
Война DVCS vs. CVCS!
Ben Collins-Sussman:Итак, есть два «класса» программистов-разработчиков, назовемих «20%» и «80%». основная движущая сила индустриипрограммного обеспечения — это «80%»-ные парни. . . . Ихзнаний в точности достаточно, чтобы сделать свою работу, затемпойти домой на выходные и забыть о компьютерах. . . .Жуткая правда №1 — Основной объем . . . ПО — создаетсявышеупомянутыми «80%» программистов.Жуткая правда №2 — Большинство «альфа-гиков» забывают«жуткую правду №1».
64 / 86
![Page 65: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/65.jpg)
Война DVCS vs. CVCS!
Ben Collins-Sussman:Большинство из 80% кодеров даже в TortoiseSVN обнаруживаюткучу «новых и интригующих» концепций, таких как «update» и«commit».Им вообще трудно использовать контроль версий, а высобираетесь объяснять им разницу между «pull» и «update», имежду «commit» и «push»? Собираетесь? Смотрите мне в глазаи попробуйте еще раз повторить это c серьезной мордой лица.
65 / 86
![Page 66: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/66.jpg)
Война DVCS vs. CVCS!
Линус Торвальдс:Например, я думаю, что большинство из вас полностьюнекомпетентны.Основной принцип распределенности — это то, что я не долженвам доверять. Я не должен давать вам доступ к коммитам. . . .Мне нужно доверять только 5, 10, ну может 15 людям. Если уменя есть доверенная сеть, в которую входят эти 5/10/15выдающихся человек, и я знаю, что они выдающиеся, я могузабирать новый код у них. И мне не надо париться на эту тему.
66 / 86
![Page 67: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/67.jpg)
Интеграция Ядра Линукса
Линус
67 / 86
![Page 68: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/68.jpg)
Интеграция Ядра Линукса
Линус
Лейтенант 1 (USB)pull
Лейтенант 2 (Сеть)
pull
Лейтенант 3 (Память)
pull
68 / 86
![Page 69: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/69.jpg)
Интеграция Ядра Линукса
Линус
Лейтенант 1 (USB)pull
Лейтенант 2 (Сеть)
pull
Лейтенант 3 (Память)
pull
Доверенный 1/1pull
Доверенный 1/2
pull
Доверенный 1/3
pull
69 / 86
![Page 70: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/70.jpg)
Интеграция Ядра Линукса
Линус
Лейтенант 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/71.jpg)
Интеграция Ядра Линукса
Линус
Лейтенант 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/72.jpg)
Интеграция Ядра Линукса
Линус
Лейтенант 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: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/73.jpg)
Базар! Надо себя «продавать»!
73 / 86
![Page 74: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/74.jpg)
Собор или Базар?
74 / 86
![Page 75: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/75.jpg)
Плюсы DVCS
+ Работа оффлайн+ Очень быстро коммитить+ Очень быстро копаться в истории+ Один пользователь/много машин
(«конфигурации»)+ Поддержка шизофрении полифонии веток с
легкими слияниями
75 / 86
![Page 76: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/76.jpg)
Минусы DVCS
− Нельзя ограничить доступ на чтение− Нельзя работать с частью репозитория− Большие репозитарии («начальное клонирование»)− Нет блокировки бинарников для целостности− «Кодовые бомбы»− Трудно контролировать! Нет единой шкалы версий!− Отстает интеграция с IDE, поисковыми и вебсистемами.− Непросто с практикой Continuous Integration
76 / 86
![Page 77: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/77.jpg)
DVCS & CI — OK
77 / 86
![Page 78: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/78.jpg)
DVCS & CI — NOT OK
78 / 86
![Page 79: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/79.jpg)
Минусы СVCS
− Скорость слияний и коммитов зависит отсети
− Невозможна работа оффлайн− Жалко тратить общий репозиторий под
[жирную] фигню.− Нет легких слияний!
79 / 86
![Page 80: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/80.jpg)
Плюсы СVCS (SVN)
+ OK с бинарниками (блокировки).+ Идеально для Continuous Integration+ Максимальная известность и понятность.+ Идеально для мониторинга, code-review,
контроля (ViewVC).+ Матерая — интеграция со всем. Полно
ништяков!+ SVNSearcher — полнотекстовый поиск —
база знаний!80 / 86
![Page 81: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/81.jpg)
Что выбрать?
Наш ответ на сегодня:
Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:
I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!
и запретить отбиваться от коллектива.
1эта презентация сделана с использованием bzr-svn
81 / 86
![Page 82: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/82.jpg)
Что выбрать?
Наш ответ на сегодня:
Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:
I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!
и запретить отбиваться от коллектива.
1эта презентация сделана с использованием bzr-svn
82 / 86
![Page 83: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/83.jpg)
Что выбрать?
Наш ответ на сегодня:
Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:
I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!
и запретить отбиваться от коллектива.
1эта презентация сделана с использованием bzr-svn
83 / 86
![Page 84: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/84.jpg)
Что выбрать?
Наш ответ на сегодня:
Централизованный SVN-репозиторий.Удовлетворит «80%» (на самом деле 99%).«20%» гиков — разрешить использоватьDVCS, умеющую работать с SVN:
I Bazaar (bzr-svn)1;I MercurialI GIT (git-svn); IMHO, на самый крайний случай!
и запретить отбиваться от коллектива.
1эта презентация сделана с использованием bzr-svn
84 / 86
![Page 85: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/85.jpg)
В любом случае, посадите вашихтехнологов изучать DVCS.
The time is now!
85 / 86
![Page 86: «Собор или базар»: системы контроля версий — централизованные или распределенные?](https://reader030.vdocuments.mx/reader030/viewer/2022020105/5469bb68af7959653c8b4da8/html5/thumbnails/86.jpg)
Наши переводы статей о системахконтроля версий:
lib.custis.ru/index.php/VCSs
Наши семинары по эффективнойразработке:
team.custis.ru
ВАШИ ВОПРОСЫ?
86 / 86