Введение в Subversion
Upcoming SlideShare
Loading in...5
×
 

Введение в Subversion

on

  • 4,003 views

 

Statistics

Views

Total Views
4,003
Views on SlideShare
3,148
Embed Views
855

Actions

Likes
2
Downloads
130
Comments
0

7 Embeds 855

http://lib.custis.ru 429
http://team.custis.ru 403
http://www.slideshare.net 12
http://www.endorfine.od.ua 4
http://wiki.office.custis.ru 4
http://static.slidesharecdn.com 2
http://209.85.135.132 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Введение в Subversion Введение в Subversion Presentation Transcript

    • Subversion: Введение Стас Фомин, stas@custis.ru Заказные ИнформСистемы 31 марта 2009 г. 1 / 47
    • План лекции 2 / 47
    • Проблемы разработки ПО: Сценарий 1 Вы пишете статью. Совместно с соавтором. Нужно править статьи одновременно. Не должна пропасть работа корректора, правившего версию недельной давности. Ваши новые правки тоже не должны пропасть. И все это в режиме «non-stop». Возможно ли это? 3 / 47
    • Проблемы разработки ПО: Сценарий 1 4 / 47
    • 5 / 47
    • Проблемы разработки ПО: Сценарий 2 Вы работаете над версией 2.0 замечательной «супер-информационной системы». Версия 2.0 еще совсем сырая, даже не компилируется. Заказчик находит критический баг в версии 1.0! Что делать? А если коды версии 1.0 утеряны? 6 / 47
    • Проблемы разработки ПО: Сценарий 2 Вы работаете над версией 2.0 замечательной «супер-информационной системы». Версия 2.0 еще совсем сырая, даже не компилируется. Заказчик находит критический баг в версии 1.0! Что делать? А если коды версии 1.0 утеряны? 7 / 47
    • Проблемы разработки ПО: Сценарий 2 Вы работаете над версией 2.0 замечательной «супер-информационной системы». Версия 2.0 еще совсем сырая, даже не компилируется. Заказчик находит критический баг в версии 1.0! Что делать? А если коды версии 1.0 утеряны? 8 / 47
    • Проблемы разработки ПО: Сценарий 3 Кто добавил вредный код в ваш проект из 100000 строк? int bad_function(int a, int b){ int c=a/b; if (a=b){ // do not forget to remove // it nahren return 137; } c++; } LINUX Ну или поблагодарить за эффективный код? 9 / 47
    • Проблемы разработки ПО: Сценарий 3 Кто добавил вредный код в ваш проект из 100000 строк? int bad_function(int a, int b){ int c=a/b; if (a=b){ // do not forget to remove // it nahren return 137; } c++; } LINUX Ну или поблагодарить за эффективный код? 10 / 47
    • SCM/Software Configuration Management Управление конфигурациями Формальная и инструментальная систематизация управления изменениями в информационной системе, включая: программные продукты; информационные модели и иные артефакты (например, электронные документы); «железо»; средства аудита самой системы; метрики работы системы (логи, журналы, архивы). 11 / 47
    • SCM/Software Configuration Management ведение документации архивирование учет требований/ошибок управление сборками Конфигурационное контроль управление исходного кода учет окружения работа команд/групп поддержка процессов разработки 12 / 47
    • Version Control System/Revision Control System Система управления версиями ПО для работы с изменяемыми информационными объектами: хранение версий программных артефактов: программных кодов; документов и документации в целом; моделей САПР. мгновенный доступ к любой версии; обеспечение совместной работы команды. 13 / 47
    • Типы СУВ Однопользовательские (Локальные) Многопользовательские: Централизованные; Распределенные. 14 / 47
    • Глоссарий централизованных СУВ repository Хранилище документов — место, где система управления версиями хранит все документы вместе с историей их изменения и другой служебной информацией. revision Версия документа. СУВ различают версии по номерам/меткам, которые назначаются автоматически. workspace Рабочая/локальная копия документов (working copy ). 15 / 47
    • Централизованные СУВ: Workspace/Repository Рабочая станция «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 16 / 47
    • История управления конфигурациями 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. 17 / 47
    • Основной ствол эволюции СУВ SCCS:Source Code Control System:1972 RCS:Revision Control System:1980 CVS:Concurrent Versions System:1985 SVN:Subversion:2001 18 / 47
    • Эволюция систем контроля версий SVN:2000 CVSNT:1998 CVS:1985 DCVS:2002-2005 OpenRCS:2006 OpenCVS:2006 Monotone:200x GIT:2006 (Linux here!) SCCS:1972 RCS:1980 BitKeeper:2001 Mercurial:2005 PRCS:1985-199x Bazaar:2004 arch:2001-2007 ArX:2003-2005 19 / 47 Darcs:2003-2007
    • 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. 20 / 47
    • Subversion: история 2000 CollabNet, Inc: запуск проекта «наследник CVS». 2001 Subversion стал хранится под Subversion. 2004 Релиз 1.0. 2005 Релиз 1.2. Возможность блокировки (поддержка WebDAV/DeltaV). 2008 Релиз 1.5. Отслеживание слияний. 2009 Релиз 1.6. Определение «Конфликтов файловой структуры» 21 / 47
    • «трехмерность» репозитория Subversion SVN SVN Repository Revision n 3D-Tree Branches Revision 1 Tags Revision 2 File A Trunk Revision 8 Revision 3 File A Revision 7 File A Revision 6 File B Revision 6 File B Revision 5 22 / 47
    • «двумерный» репозиторий Subversion 23 / 47
    • Ревизии: «Стержневые» и «Оперативные» 24 / 47
    • Репозитарий Subversion Экономия: храняться только изменения между версиями. Как для текстовых, так и для бинарных файлов. Совет Старайтесь хранить в репозитарии только текстовые файлы! Бинарные файлы получайте с помощью систем сборки. 25 / 47
    • Базовые операции checkout Извлечение документа из хранилища и создание рабочей копии. Возможно заказать определенные версий файлов или наборов файлов. update Обновление рабочей копии из репозитория. Можно переключится на другие версии файлов. commit Создание новой версии, публикация изменений. Распространение изменений, сделанных в рабочей копии, на хранилище документов. При этом в хранилище создаётся новая версия изменённых документов. Помните! «Копирование-Изменение-Слияние» на порядок эффективней модели «Блокирование-Изменение-Разблокирование»! 26 / 47
    • Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 LINUX LINUX 0 LINUX 27 / 47
    • Cover.svg Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 LINUX LINUX 0 LINUX 28 / 47
    • Cover.svg Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 LINUX LINUX 0 kyle> svn add Cover.svg A Cover.svg LINUX 29 / 47
    • Cover.svg Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 LINUX LINUX 0 kyle> svn commit LINUX 30 / 47
    • Cover.svg@1 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Cover.svg LINUX LINUX 1 kyle> svn commit Completed At revision 1 LINUX 31 / 47
    • Cover.svg@12 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt Cover.svg LINUX LINUX 12 kyle> svn add Chapter-1.txt A Chapter-1.txt kyle> svn commit Chapter-1.txt LINUX 32 / 47
    • Cover.svg@12 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt@13 Cover.svg Chapter-1.txt LINUX LINUX 13 kyle> svn add Chapter-1.txt A Chapter-1.txt kyle> svn commit Chapter-1.txt Completed At revision 13 LINUX 33 / 47
    • Cover.svg@12 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt@13 Cover.svg Chapter-1.txt LINUX Cover.svg@13 Chapter-1.txt@13 LINUX 13 stan> svn checkout ... U Cover.svg U Chapter-1.txt Completed At revision 13 LINUX 34 / 47
    • Cover.svg@12 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt@13 Cover.svg Chapter-1.txt LINUX Cover.svg@21 Chapter-1.txt@21 LINUX 21 kyle> svn commit svn: Commit failed: svn: Your file or directory ’Chapter-1.txt’ is LINUX probably out-of-date 35 / 47
    • Базовые события merge Слияние — объединение независимых изменений в единую версию документа. conflict Конфликт — ситуация, когда несколько пользователей сделали изменения одного и того же участка документа. Конфликт обнаруживается, когда один пользователь опубликовал свои изменения, а второй пытается опубликовать и система сама не может корректно слить конфликтующие изменения. Маркеры конфликта: <<<<<<< .mine И опыт, сын ашипок трудных, и гений, парадоксов друг ======= И опыт, сын ошибок трудных, и гений, породоксов друг >>>>>>> .r12 36 / 47
    • Cover.svg@21 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt@21 Cover.svg Chapter-1.txt LINUX Cover.svg@21 Chapter-1.txt@21 LINUX 21 kyle> svn update G Chapter-1.txt Updated to revision 21. LINUX 37 / 47
    • Chapter-1.txt@21 Репозиторий 04 04 04 04 04 04 04 04 04 04 04 20 35 3F 3E 37 38 42 3E 40 38 39 Chapter-1.txt.mine Chapter-1.txt.r12 Cover.svg Chapter-1.txt.r21 Chapter-1.txt LINUX Cover.svg@21 Chapter-1.txt@21 LINUX 21 kyle> svn update C Chapter-1.txt Updated to revision 21. LINUX 38 / 47
    • «Status» sandboxtrunkarticles>svn status -v ? e 4 4 teacher . 9 9 teacher article-1.txt 10 10 student16 article-2.txt 39 / 47
    • «Diff» «diff» – известная UNIX-утилита для сравнения текстовых файлов Команда всех СУВ, показывающая разницу между версиями. 40 / 47
    • «Blame»/«Annotate»/«Praise» Позволяет видеть кто и когда отредактировал каждую строчку. Позволяет найти виновного за баг. Эффективно использовать совместно с «diff» и историей изменений. 41 / 47
    • Ветки и метки branch Ветки — параллельные процессы эволюции кода. Одинаковая историю до точки ветвления и разная — после неё. Например, удобно держать отдельные ветки для учета багов в выпущенных версиях или проверки экспериментальных идей. Сливают ветки между собой, или с основным стволом разработки. tag Метка — символическое имя для группы ревизий/документов. 42 / 47
    • Ветки и метки в Subversion Их нет! 43 / 47
    • Ветки и метки в Subversion Но есть «джентельменское соглашение о структуре каталогов»: /branches /tags /trunk В случае нескольких проектов в одном репозитории: /project1 /branches /tags /trunk /project2 /branches /tags /trunk 44 / 47
    • Проблемы CVS решенные в SVN + Каталоги + Транзакции + Модификации имён файлов + Метаданные (Свойства/properties) + Блокировки + Эффективность клиент-серверного обмена + Эффективность хранения двоичных файлов + Эффективность создания ветвей и меток + Эффективность использования памяти сервера 45 / 47
    • TortoiseSVN Лучшие клиенты под Windows! Сейчас ознакомимся на практике! 46 / 47
    • СПАСИБО ЗА ВНИМАНИЕ. ВАШИ ВОПРОСЫ? 47 / 47