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

       Стас Фомин, stas@cust...
Version Control System/Revision Control System


ПО для работы с изменяемыми
информационными объектами:
   хранение версий...
Классы систем управления версиями




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




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



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




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




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




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



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




   Однопользовательские        Многопол...
Классы систем управления версиями


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




   Однопользовательские        Многополь...
Классы систем управления версиями



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




  Однопользовательские        Многопольз...
Классы систем управления версиями


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




  Однопользовательские        Многопользо...
Миниглоссарий СУВ



 repository Хранилище документов — место, где система
            управления версиями хранит все доку...
Централизованный Repository и Workspaces




            Репозиторий
             Repository



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




                          Рабочая станция «A» (Windows)
    Репозиторий
     ...
Централизованный Repository и Workspaces



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

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


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

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


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

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

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

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

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

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

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



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




                               20 / 86
Ветки и метки

     branch Ветки — параллельные процессы эволюции кода.
            Одинаковая историю до точки ветвления ...
Базовые операции DVCS



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




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




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




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

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

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

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

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

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

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

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

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




        SCCS:1972

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




   SCCS:1972           RCS:1980



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




   SCCS:1972       RCS:1980       CVCS




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




  SCCS:1972   RCS:1980   CVCS     CVS:1985




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




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




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




                                            CVSNT:1998

  SCCS:1972   RCS:1980   CVCS ...
Проблемы CVS решенные в SVN


   +   Каталоги
   +   Транзакции
   +   Модификации имён файлов
   +   Метаданные (Свойства...
Эволюция систем контроля версий




                                           CVSNT:1998

  SCCS:1972   RCS:1980   CVCS  ...
Эволюция систем контроля версий



                                            CVSNT:1998

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



                                                  CVSNT:1998

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


                                                     CVSNT:1998

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


                                                     CVSNT:1998



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


                                                  CVSNT:1998



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


                                                     CVSNT:1998



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

                                                    CVSNT:1998



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

                                                  CVSNT:1998



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

                                                  CVSNT:1998



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

                                                  CVSNT:1998



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

The Forrester WaveTM : Software Change And Configuration
Management, Q2 2007 IBM ...
Опрос на портале
  habrahabr.ru
     26-27
    октября
     2009




         54 / 86
Опрос на портале
  habrahabr.ru
     26-27
    октября
     2009




         55 / 86
Опрос на портале
  habrahabr.ru
     26-27
    октября
     2009




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




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




             57 / 86
Война DVCS vs. CVCS!




                  58 / 86
Война DVCS vs. CVCS!



Линус Торвальдс:
Когда я сказал, что страстно ненавижу CVS, я должен также
сказать, что если в ауд...
Война DVCS vs. CVCS!



Линус Торвальдс:
А сейчас я рассказываю свое единственно правильное мнение,
так что пользователи C...
Война DVCS vs. CVCS!




Ben Collins-Sussman:
. . . Смотрите, что хочет сделать этот счастливчик — уползти в
пещеру, недел...
Война DVCS vs. CVCS!
Линус Торвальдс:
Ветки полностью бесполезны, если Вы не объединяете их, а CVS
не может объединить воо...
63 / 86
Война DVCS vs. CVCS!



Ben Collins-Sussman:
Итак, есть два «класса» программистов-разработчиков, назовем
их «20%» и «80%»...
Война DVCS vs. CVCS!



Ben Collins-Sussman:
Большинство из 80% кодеров даже в TortoiseSVN обнаруживают
кучу «новых и интр...
Война DVCS vs. CVCS!


Линус Торвальдс:
Например, я думаю, что большинство из вас полностью
некомпетентны.
Основной принци...
Интеграция Ядра Линукса




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


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


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


                                               Доверенный 1/1
                                  ...
Интеграция Ядра Линукса

                                               Доверенный 1/1
                                   ...
Интеграция Ядра Линукса
                                                    Доверенный 1/1
                               ...
Интеграция Ядра Линукса
                                                    Доверенный 1/1
                               ...
Базар! Надо себя «продавать»!




                                73 / 86
Собор или Базар?




                   74 / 86
Плюсы DVCS

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

 −   Нельзя ограничить доступ на чтение
 −   Нельзя работать с частью репозитория
 −   Большие репозитарии («...
DVCS & CI — OK




                 77 / 86
DVCS & CI — NOT OK




                     78 / 86
Минусы СVCS


− Скорость слияний и коммитов зависит от
  сети
− Невозможна работа оффлайн
− Жалко тратить общий репозитори...
Плюсы СVCS (SVN)
+ OK с бинарниками (блокировки).
+ Идеально для Continuous Integration
+ Максимальная известность и понят...
Что выбрать?

Наш ответ на сегодня:
       Централизованный SVN-репозиторий.
       Удовлетворит «80%» (на самом деле 99%)...
Что выбрать?

Наш ответ на сегодня:
       Централизованный SVN-репозиторий.
       Удовлетворит «80%» (на самом деле 99%)...
Что выбрать?

Наш ответ на сегодня:
       Централизованный SVN-репозиторий.
       Удовлетворит «80%» (на самом деле 99%)...
Что выбрать?

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

         The time is now!




                                 85...
Наши переводы статей о системах
       контроля версий:
lib.custis.ru/index.php/VCSs
Наши семинары по эффективной
        ...
Upcoming SlideShare
Loading in …5
×

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

2,044 views
1,991 views

Published on

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

0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,044
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
49
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

  1. 1. «Собор или базар»: системы контроля версий — централизованные или распределенные? Стас Фомин, stas@custis.ru Заказные ИнформСистемы 29 октября 2009 г. 1 / 86
  2. 2. Version Control System/Revision Control System ПО для работы с изменяемыми информационными объектами: хранение версий программных артефактов: программных кодов; документов и документации в целом; моделей САПР. мгновенный доступ к любой версии; обеспечение совместной работы команды. 2 / 86
  3. 3. Классы систем управления версиями Системы управления версиями 3 / 86
  4. 4. Классы систем управления версиями Системы управления версиями Однопользовательские Многопользовательские 4 / 86
  5. 5. Однопользовательские 1 создать проект Computer Created by Andrew Fitzsimon 2 запись изменений 3 просмотр истории 4 выпуск версий 5 / 86
  6. 6. Классы систем управления версиями Системы управления версиями Однопользовательские Многопользовательские 6 / 86
  7. 7. Классы систем управления версиями Системы управления версиями Однопользовательские Многопользовательские Не актуальны! 7 / 86
  8. 8. Классы систем управления версиями Системы управления версиями Однопользовательские Многопользовательские Не актуальны! Централизованные (СVCS) Распределенные (DVCS) 8 / 86
  9. 9. Классы систем управления версиями Системы управления версиями Однопользовательские Многопользовательские Не актуальны! Централизованные (СVCS) Распределенные (DVCS) Наша тема! 9 / 86
  10. 10. Миниглоссарий СУВ repository Хранилище документов — место, где система управления версиями хранит все документы вместе с историей их изменения и другой служебной информацией. revision Версия документа. СУВ различают версии по номерам/меткам, которые назначаются автоматически. workspace Рабочая/локальная копия документов (working copy ). 10 / 86
  11. 11. Централизованный Repository и Workspaces Репозиторий Repository 11 / 86
  12. 12. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Репозиторий Workspace 1: c:projectssupercode Repository 12 / 86
  13. 13. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Workspace 1: c:projectssupercode Репозиторий Рабочая станция «B» (Linux) Repository Workspace 4: /usr/share/supercode 13 / 86
  14. 14. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Workspace 1: c:projectssupercode Репозиторий Workspace 2: c:projectsbugfixes Repository Рабочая станция «B» (Linux) Workspace 4: /usr/share/supercode 14 / 86
  15. 15. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Workspace 1: c:projectssupercode Workspace 2: c:projectsbugfixes Репозиторий Repository Workspace 3: c:projectsexperimental Рабочая станция «B» (Linux) Workspace 4: /usr/share/supercode 15 / 86
  16. 16. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Workspace 1: c:projectssupercode Workspace 2: c:projectsbugfixes Репозиторий Workspace 3: c:projectsexperimental Repository Рабочая станция «B» (Linux) Workspace 4: /usr/share/supercode Workspace 5: /usr/share/test-supercode 16 / 86
  17. 17. Централизованный Repository и Workspaces Рабочая станция «A» (Windows) Workspace 1: c:projectssupercode Workspace 2: c:projectsbugfixes Workspace 3: c:projectsexperimental Репозиторий Рабочая станция «B» (Linux) Repository Workspace 4: /usr/share/supercode Workspace 5: /usr/share/test-supercode Рабочая станция «C» (Mac OS) Workspace 6 17 / 86
  18. 18. Базовые операции CVCS checkout Извлечение данных из хранилища и создание рабочей копии. Возможно заказать определенные версий. update Обновление рабочей копии из репозитория. Можно переключится на другие версии. commit Создание новой версии, публикация изменений. Распространение изменений, сделанных в рабочей копии, на репозиторий. В хранилище создаётся новая версия. 18 / 86
  19. 19. Централизованные системы Привычная всем схема! Computer Created by Andrew Fitzsimon 2 update 1 checkout Computer Created by Andrew Fitzsimon Server 3 commit 19 / 86
  20. 20. В CVCS версии линейно растут 20 / 86
  21. 21. Ветки и метки branch Ветки — параллельные процессы эволюции кода. Одинаковая историю до точки ветвления и разная — после неё. Например, удобно держать отдельные ветки для учета багов в выпущенных версиях или проверки экспериментальных идей. Сливают ветки между собой, или с основным стволом разработки. tag Метка — символическое имя для версии. Замороженная ветка. Branches 6 9 11 15 16 Merges 2 3 7 8 Discontinued development branch 1 4 10 12 14 Trunks 5 Tags 13 21 / 86
  22. 22. Базовые операции DVCS Принцип Хоттабыча — каждому по репозиторию! commit Фиксация новой версии в своем репозитарии. pull Загрузка изменений от кого-то в отдельную ветку. push Передача изменений кому-то в отдельную ветку. merge Слияние изменений из двух веток. branch Ветвление репозитория. 22 / 86
  23. 23. Распределенные системы — швейцарский нож Можно работать в одиночку без серверов! 1 создать проект Computer Created by Andrew Fitzsimon 2 запись изменений 3 просмотр истории 4 выпуск версий 23 / 86
  24. 24. Распределенные системы — швейцарский нож Можно по старинке — с центральным сервером! Computer Created by Andrew Fitzsimon 2 update 1 checkout Computer Created by Andrew Fitzsimon Server 3 commit 24 / 86
  25. 25. Распределенные системы — швейцарский нож Можно без центрального сервера — произвольная схема обмена изменениями! 1 запуск проект 2 клонирование-ветвление Computer Computer Created by Andrew Fitzsimon Created by Andrew Fitzsimon фиксируемые фиксируемые 3 3 правки правки слияние слияние 4 4 изменений изменений с товарищем с товарищем 25 / 86
  26. 26. Распределенные системы — швейцарский нож Можно с центральным сервером, с локальными фиксациями и ветками, и отдельной стратегией публикации и слияний. Computer 2 pull merge Created by Andrew Fitzsimon основной ствол 1 branch Computer Created by Andrew Fitzsimon Server 3 commit локальные ветки 26 / 86
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 35. Эволюция систем контроля версий SCCS:1972 35 / 86
  36. 36. Эволюция систем контроля версий SCCS:1972 RCS:1980 36 / 86
  37. 37. Эволюция систем контроля версий SCCS:1972 RCS:1980 CVCS 37 / 86
  38. 38. Эволюция систем контроля версий SCCS:1972 RCS:1980 CVCS CVS:1985 38 / 86
  39. 39. Эволюция систем контроля версий SCCS:1972 RCS:1980 CVCS CVS:1985 CVSNT:1998 39 / 86
  40. 40. Эволюция систем контроля версий CVSNT:1998 SCCS:1972 RCS:1980 CVCS CVS:1985 SVN:2000 40 / 86
  41. 41. Проблемы CVS решенные в SVN + Каталоги + Транзакции + Модификации имён файлов + Метаданные (Свойства/properties) + Блокировки + Эффективность клиент-серверного обмена + Эффективность хранения двоичных файлов + Эффективность создания ветвей и меток + Эффективность использования памяти сервера 41 / 86
  42. 42. Эволюция систем контроля версий CVSNT:1998 SCCS:1972 RCS:1980 CVCS CVS:1985 SVN:2000 42 / 86
  43. 43. Эволюция систем контроля версий CVSNT:1998 CVCS CVS:1985 SCCS:1972 RCS:1980 SVN:2000 DVCS 43 / 86
  44. 44. Эволюция систем контроля версий CVSNT:1998 CVCS CVS:1985 SCCS:1972 RCS:1980 SVN:2000 DVCS arch:2001-2007 Monotone:200x 44 / 86
  45. 45. Эволюция систем контроля версий CVSNT:1998 CVS:1985 CVCS SVN:2000 SCCS:1972 RCS:1980 arch:2001-2007 DVCS Monotone:200x BitKeeper:2001 45 / 86
  46. 46. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS SCCS:1972 RCS:1980 arch:2001-2007 Darcs:2003-2007 DVCS Monotone:200x BitKeeper:2001 46 / 86
  47. 47. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS SCCS:1972 RCS:1980 arch:2001-2007 Darcs:2003-2007 DVCS Monotone:200x GIT:2005 BitKeeper:2001 47 / 86
  48. 48. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS SCCS:1972 RCS:1980 arch:2001-2007 Darcs:2003-2007 DVCS BitKeeper:2001 GIT:2005 Monotone:200x Mercurial:2005 48 / 86
  49. 49. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS Darcs:2003-2007 SCCS:1972 RCS:1980 arch:2001-2007 DVCS Bazaar:2005 BitKeeper:2001 GIT:2005 Monotone:200x Mercurial:2005 49 / 86
  50. 50. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS Darcs:2003-2007 SCCS:1972 RCS:1980 arch:2001-2007 Bazaar:2005 DVCS BitKeeper:2001 GIT:2005 Monotone:200x Mercurial:2005 50 / 86
  51. 51. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS Darcs:2003-2007 SCCS:1972 RCS:1980 arch:2001-2007 Bazaar:2005 DVCS BitKeeper:2001 GIT:2005 Monotone:200x Mercurial:2005 51 / 86
  52. 52. Эволюция систем контроля версий CVSNT:1998 CVS:1985 SVN:2000 CVCS Darcs:2003-2007 SCCS:1972 RCS:1980 arch:2001-2007 Bazaar:2005 DVCS BitKeeper:2001 GIT:2005 Monotone:200x Mercurial:2005 52 / 86
  53. 53. Subversion — венец централизованных СУВ The Forrester WaveTM : Software Change And Configuration Management, Q2 2007 IBM Is The Unified SCCM Front-Runner, Subversion Leads On Standalone SCM. Risky Strong Bets Contenders Performers Leaders Strong Go online to download the Forrester Wave tool Borland for more detailed product Serena Dimensions Software Subversion evaluations, feature Perforce comparisons, and MKS IBM customizable rankings. CA Telelogic Current o ering AccuRev Microsoft Serena PVCS Market presence Full vendor participation Incomplete vendor participation Weak Weak Strategy Strong 41388 Source: Forrester Research, Inc. 53 / 86
  54. 54. Опрос на портале habrahabr.ru 26-27 октября 2009 54 / 86
  55. 55. Опрос на портале habrahabr.ru 26-27 октября 2009 55 / 86
  56. 56. Опрос на портале habrahabr.ru 26-27 октября 2009 56 / 86
  57. 57. Опрос на портале habrahabr.ru ? 26-27 октября 2009 57 / 86
  58. 58. Война DVCS vs. CVCS! 58 / 86
  59. 59. Война DVCS vs. CVCS! Линус Торвальдс: Когда я сказал, что страстно ненавижу CVS, я должен также сказать, что если в аудитории есть пользователи SVN, то вы, возможно, захотите уйти. Поскольку моя ненависть к CVS означает, что я считаю Subversion самым бесцельным проектом, так как основной девиз Subversion некоторое время был «Сделанный по-уму CVS» или что-то вроде этого. А если вы начинаете с такого слогана, то вы никуда не сможете прийти. Это так, потому что CVS невозможно сделать «правильным». 59 / 86
  60. 60. Война DVCS vs. CVCS! Линус Торвальдс: А сейчас я рассказываю свое единственно правильное мнение, так что пользователи CVS, если вы действительно его так любите, уйдите с глаз моих долой. Вам надо обратиться в психушку или куда-то еще. Поэтому, например, я Subversion даже трехметровым багром трогать не буду. В Subversion большой репозиторий, куда все обязаны складывать свои данные. А централизованная модель просто не работает, когда. . . давайте взглянем на некоторые такие случаи. 60 / 86
  61. 61. Война DVCS vs. CVCS! Ben Collins-Sussman: . . . Смотрите, что хочет сделать этот счастливчик — уползти в пещеру, неделями в одиночку корпеть над сложной функциональностью, а затем воткнуть «вылизанное» решение в «основной ствол» проекта. . . В нашем Subversion-сообществе такое поведение мы именуем «сбрасывание бомбы» . . . 61 / 86
  62. 62. Война DVCS vs. CVCS! Линус Торвальдс: Ветки полностью бесполезны, если Вы не объединяете их, а CVS не может объединить вообще ничего. Вы можете слить изменения однажды, но тогда CVS забывает то, что вы сделали, и вы никогда не сможете объединять снова, не получая адские конфликты. Слияния в Subversion — полная беда. . . . Невероятно, насколько эти люди глупы. Они все время смотрели на проблему неверно. Проблема-то не в ветвлении, а в слиянии! Branches 6 9 11 15 16 Merges 2 3 7 8 Discontinued development branch 1 4 10 12 14 Trunks 5 Tags 13 62 / 86
  63. 63. 63 / 86
  64. 64. Война DVCS vs. CVCS! Ben Collins-Sussman: Итак, есть два «класса» программистов-разработчиков, назовем их «20%» и «80%». основная движущая сила индустрии программного обеспечения — это «80%»-ные парни. . . . Их знаний в точности достаточно, чтобы сделать свою работу, затем пойти домой на выходные и забыть о компьютерах. . . . Жуткая правда №1 — Основной объем . . . ПО — создается вышеупомянутыми «80%» программистов. Жуткая правда №2 — Большинство «альфа-гиков» забывают «жуткую правду №1». 64 / 86
  65. 65. Война DVCS vs. CVCS! Ben Collins-Sussman: Большинство из 80% кодеров даже в TortoiseSVN обнаруживают кучу «новых и интригующих» концепций, таких как «update» и «commit». Им вообще трудно использовать контроль версий, а вы собираетесь объяснять им разницу между «pull» и «update», и между «commit» и «push»? Собираетесь? Смотрите мне в глаза и попробуйте еще раз повторить это c серьезной мордой лица. 65 / 86
  66. 66. Война DVCS vs. CVCS! Линус Торвальдс: Например, я думаю, что большинство из вас полностью некомпетентны. Основной принцип распределенности — это то, что я не должен вам доверять. Я не должен давать вам доступ к коммитам. . . . Мне нужно доверять только 5, 10, ну может 15 людям. Если у меня есть доверенная сеть, в которую входят эти 5/10/15 выдающихся человек, и я знаю, что они выдающиеся, я могу забирать новый код у них. И мне не надо париться на эту тему. 66 / 86
  67. 67. Интеграция Ядра Линукса Линус 67 / 86
  68. 68. Интеграция Ядра Линукса pull Лейтенант 1 (USB) pull Линус Лейтенант 2 (Сеть) pull Лейтенант 3 (Память) 68 / 86
  69. 69. Интеграция Ядра Линукса Доверенный 1/1 pull pull pull Лейтенант 1 (USB) Доверенный 1/2 pull pull Линус Лейтенант 2 (Сеть) Доверенный 1/3 pull Лейтенант 3 (Память) 69 / 86
  70. 70. Интеграция Ядра Линукса Доверенный 1/1 pull pull Доверенный 1/2 Лейтенант 1 (USB) pull Доверенный 1/3 pull pull Доверенный 2/1 pull Линус Лейтенант 2 (Сеть) pull pull pull Доверенный 2/2 Лейтенант 3 (Память) Доверенный 2/3 70 / 86
  71. 71. Интеграция Ядра Линукса Доверенный 1/1 pull pull Доверенный 1/2 Лейтенант 1 (USB) pull Доверенный 1/3 pull Доверенный 2/1 pull pull pull Линус Лейтенант 2 (Сеть) Доверенный 2/2 pull pull Доверенный 2/3 pull Доверенный 3/1 Лейтенант 3 (Память) pull pull Доверенный 3/2 Доверенный 3/3 71 / 86
  72. 72. Интеграция Ядра Линукса Доверенный 1/1 pull pull Доверенный 1/2 Лейтенант 1 (USB) pull Доверенный 1/3 pull Доверенный 2/1 pull pull pull Линус Лейтенант 2 (Сеть) Доверенный 2/2 pull pull Доверенный 2/3 pull Доверенный 3/1 Лейтенант 3 (Память) pull pull Доверенный 3/2 Доверенный 3/3 72 / 86
  73. 73. Базар! Надо себя «продавать»! 73 / 86
  74. 74. Собор или Базар? 74 / 86
  75. 75. Плюсы DVCS + Работа оффлайн + Очень быстро коммитить + Очень быстро копаться в истории + Один пользователь/много машин («конфигурации») + Поддержка шизофрении полифонии веток с легкими слияниями 75 / 86
  76. 76. Минусы DVCS − Нельзя ограничить доступ на чтение − Нельзя работать с частью репозитория − Большие репозитарии («начальное клонирование») − Нет блокировки бинарников для целостности − «Кодовые бомбы» − Трудно контролировать! Нет единой шкалы версий! − Отстает интеграция с IDE, поисковыми и вебсистемами. − Непросто с практикой Continuous Integration 76 / 86
  77. 77. DVCS & CI — OK 77 / 86
  78. 78. DVCS & CI — NOT OK 78 / 86
  79. 79. Минусы СVCS − Скорость слияний и коммитов зависит от сети − Невозможна работа оффлайн − Жалко тратить общий репозиторий под [жирную] фигню. − Нет легких слияний! 79 / 86
  80. 80. Плюсы СVCS (SVN) + OK с бинарниками (блокировки). + Идеально для Continuous Integration + Максимальная известность и понятность. + Идеально для мониторинга, code-review, контроля (ViewVC). + Матерая — интеграция со всем. Полно ништяков! + SVNSearcher — полнотекстовый поиск — база знаний! 80 / 86
  81. 81. Что выбрать? Наш ответ на сегодня: Централизованный SVN-репозиторий. Удовлетворит «80%» (на самом деле 99%). «20%» гиков — разрешить использовать DVCS, умеющую работать с SVN: Bazaar (bzr-svn)1 ; Mercurial GIT (git-svn); IMHO, на самый крайний случай! и запретить отбиваться от коллектива. 1 эта презентация сделана с использованием bzr-svn 81 / 86
  82. 82. Что выбрать? Наш ответ на сегодня: Централизованный SVN-репозиторий. Удовлетворит «80%» (на самом деле 99%). «20%» гиков — разрешить использовать DVCS, умеющую работать с SVN: Bazaar (bzr-svn)1 ; Mercurial GIT (git-svn); IMHO, на самый крайний случай! и запретить отбиваться от коллектива. 1 эта презентация сделана с использованием bzr-svn 82 / 86
  83. 83. Что выбрать? Наш ответ на сегодня: Централизованный SVN-репозиторий. Удовлетворит «80%» (на самом деле 99%). «20%» гиков — разрешить использовать DVCS, умеющую работать с SVN: Bazaar (bzr-svn)1 ; Mercurial GIT (git-svn); IMHO, на самый крайний случай! и запретить отбиваться от коллектива. 1 эта презентация сделана с использованием bzr-svn 83 / 86
  84. 84. Что выбрать? Наш ответ на сегодня: Централизованный SVN-репозиторий. Удовлетворит «80%» (на самом деле 99%). «20%» гиков — разрешить использовать DVCS, умеющую работать с SVN: Bazaar (bzr-svn)1 ; Mercurial GIT (git-svn); IMHO, на самый крайний случай! и запретить отбиваться от коллектива. 1 эта презентация сделана с использованием bzr-svn 84 / 86
  85. 85. В любом случае, посадите ваших технологов изучать DVCS. The time is now! 85 / 86
  86. 86. Наши переводы статей о системах контроля версий: lib.custis.ru/index.php/VCSs Наши семинары по эффективной разработке: team.custis.ru ВАШИ ВОПРОСЫ? 86 / 86

×