Your SlideShare is downloading. ×
0
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Переход на Git из Subversion
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Переход на Git из Subversion

1,149

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
18
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Переход на распределённуюсистему контроля версий из mvasilyev@intersog.com
  • 2. Развитие систем контроляверсий 1. Ручное копирование файлов 2012-02-01 2012-02-02 2012-02-032. Локальные системы контроля версий Для каждого файла хранится исходное состояние и RCS список изменений SCCS
  • 3. Системы контроляверсий клиент-серверЦентрализованые системы контроля версий●CVS●Subversion●IBM Rational ClearCase●MKS Integrity●Perforce●PVCS●Microsoft Visual SourceSafe●Microsoft Visual Studio Application Lifecycle Management
  • 4. Работа с централизованымисистемами контроля версий ●Обмен файлами через центральный сервер ●История хранится на центральном сервере ●Клиентские компьютеры содержат только последнюю версию
  • 5. Работа с централизованымисистемами контроля версийКонтроль одновременного доступа к файламБлокирование файлов на запись исключает конфликты, но уменьшаетвозможности одновременного редактирования
  • 6. Работа с централизованымисистемами контроля версийОдновременное редактирование файла ? Приводит к конфликтам и необходимости их разрешения вручную
  • 7. Работа с ветками вSubversion При слиянии веток не используется история версий 1 3 5 7trunk 2 4 6 bug1234 Центральный сервер – слабое место
  • 8. Распределённые системыконтроля версий ●Git ●Mercurial ●Bazaar ●Darcs ●SVK ●Bit Keeper Каждый компьютер содержит копию репозитория
  • 9. Почему я выбралGit ?1. Кроссплатформенность Linux Windows Mac OS X2. Наличие удобных инструментов
  • 10. Почему я выбралGit ?3. Скорость работы - Большая часть операций выполняется локально; - Скорость операций высокая; - Данные хранятся компактно (последняя версия + разница в сжатом виде; - Эффективно работает даже с бинарными файлами.4. Распространённость
  • 11. Git Контекстно-адресуемая файловая система с интерфейсом для системы контроля версий Хранилище ключ-значение Подготовка к работе с Git git config --global user.email "you@example.com" git config --global user.name "Your Name"
  • 12. Начало работы с Git Инициализация нового репозитория~/project$ git initInitialized empty Git repository in ~/project/.git/~/project$ git add *.java~/project$ git add *.txt~/project$ git commit -m "initial version"[master (root-commit) e39cac5] initial version 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 main.java create mode 100644 readme.txt Клонирование существующего репозитория/tmp$ git clone https://github.com/github/git git-srcInitialized empty Git repository in /tmp/git-src/.git/remote: Counting objects: 112488, done.remote: Compressing objects: 100% (36088/36088), done.remote: Total 112488 (delta 82161), reused 104459 (delta 74813)Receiving objects: 100% (112488/112488), 23.52 MiB | 747 KiB/s, done.Resolving deltas: 100% (82161/82161), done.
  • 13. Жизненный цикл файлов вGit3 состояния файлов:1. Сохранённый2. Модифицированый3. Индексированый
  • 14. МеткиМетка – это указатель на коммитСоздание легковесной метки git tag v1Метка-аннотация (комментарий вводить обязательно) git tag -a v2 -m “вторая версия” V1Метка с подписью git tag -s v3 -m “третья версия”Метки можно использовать в “git push” git push origin v2Отправка меток на сервер git push origin --tags V2
  • 15. ВетвлениеSVN - медленно Git - мгновенно В Subversion создание, слияние веток В Git вся работа с ветками и переключение между ветками происходит локально происходит через сеть
  • 16. ВетвлениеПосле нескольких коммитов ветка master (по умолчанию) указывает напоследний HEAD master Коммит 1 Коммит 2 Коммит 3 состояние 1 cостояние 2 состояние 3HEAD – указатель на ветку, в которой мы находимся
  • 17. ВетвлениеСоздание новой ветки git branch testing HEAD master Коммит 1 Коммит 2 Коммит 3 testing
  • 18. ВетвлениеПереключение в новую ветку git checkout testing master Коммит 1 Коммит 2 Коммит 3 testing HEAD
  • 19. ВетвлениеИзменения в новой ветке git commit master Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing HEAD
  • 20. ВетвлениеПереключение в ветку master git checkout master HEAD master Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing
  • 21. ВетвлениеИзменения в ветке master git commit HEAD master Коммит 5 Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing
  • 22. Ветвление Изменения в ветке master git commit HEAD master Коммит 5 Коммит 6Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing
  • 23. Ветвление Слияние веток git merge testing HEAD master Коммит 5 Коммит 6Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing
  • 24. Ветвление Слияние веток git merge testing HEAD master Коммит 5 Коммит 6 Коммит 7Коммит 1 Коммит 2 Коммит 3 Коммит 4 testing
  • 25. ВетвлениеКонфликты при слиянии веток git merge testing Auto-merging readme.txt CONFLICT (content): Merge conflict in readme.txt Automatic merge failed; fix conflicts and then commit the result.Типы веток Долгоживущие master Тематические ticket1234 Удалённые (remote) origin/master origin2/testing Удалённые ветки бывают отслеживаемыми
  • 26. Перемещение (rebase) HEAD experiment Коммит 4 Коммит 6Коммит 1 Коммит 2 Коммит 3 Коммит 5 master HEADgit rebase master experimentКоммит 1 Коммит 2 Коммит 3 Коммит 5 Коммит 4 Коммит 6 masterПри перемещении изменяется история, создаются новые коммитыНельзя перемещать коммиты, которые уже существуют в общем репозитории
  • 27. ВзаимодействиеGit ↔ SubversionGit-svn -двусторонний мост, позволяет использовать Git и Subversion совместноgit svn clone http://svn.webkit.org/repository/webkit -T trunk -b branches -t tags . . .git commitgit svn rebasegit svn dcommitСоздание веток в Subversiongit svn branch testingПолный переход на Gitgit svn clone http://svn.webkit.org/repository/webkit --no-metadataФлаг --no-metadata обрывает связь с SVN репозиторием
  • 28. Работа с удалённымирепозиториямиПоддерживаемыепротоколы: ssh, git, http, https, ftp, ftps и rsynchttps://github.com/github/githttp://github.com/jcnetdev/yubnub.gitgit://github.com/sitaramc/gitolite.gituser@server:/path.git /home/user/projectfile:///home/user/project
  • 29. Работа с удалённымирепозиториямиКоманда “git remote” управляет списком удалённых репозиториев.Каждый репозиторий равноценно используется для получения иотправки данных pull pu pull pu sh sh sh pu push
  • 30. Распределённая работа с Git Модель организации с центральным репозиторием Центральный репозиторий Вася Петя Паша
  • 31. Распределённая работа с Git Модель организации с менеджером по интеграции Открытый Открытый Открытый Священный репозиторий репозиторий репозиторий репозиторий Васи Пети Паши Личный Личный Личный Менеджер по репозиторий репозиторий репозиторий интеграции Васи Пети Паши
  • 32. Распределённая работа с Git Диктатор и лейтенанты Священный Диктатор репозиторий Лейтенант Лейтенантразработчик разработчик разработчик разработчик разработчик
  • 33. Распределённая работа с Git Циклическая модель Разработчик 2 Разработчик 1 Разработчик 3 Разработчик 5 Разработчик 4
  • 34. Установка Git на серверПротокол Git git clone git://server:project.gitПреимущества: Самый быстрый протоколНедостатки: Отсутствие авторизации пользователейПротокол HTTP(S) git clone http://example.com/gitproject.gitПреимущества: Простой в установке, используется любой web-серверНедостатки: Не очень эффективен с клиентской стороны
  • 35. Установка Git на серверGitosis, GitoliteУстанавливается на сервер, организует доступ крепозиторию через SSH протокол используя один логин.Доступ предоставляется с помощью открытых ключейпользователей.Предоставляет удобное управление открытыми ключамипользователей.
  • 36. Устройство репозитория Git~/project$ git initInitialized empty Git repository in ~/project/.git/git add readme.txt~/project$ git commit -am "initial rev"[master (root-commit) 9585139] initial rev 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 readme.txt~/project$ cd .git~/project/.git$ ls -altotal 52drwxr-xr-x 8 user user 4096 ./drwxr-xr-x 3 user user 4096 ../drwxr-xr-x 2 user user 4096 branches/-rw-r--r-- 1 user user 12 COMMIT_EDITMSG-rw-r--r-- 1 user user 92 config-rw-r--r-- 1 user user 73 description-rw-r--r-- 1 user user 23 HEADdrwxr-xr-x 2 user user 4096 hooks/-rw-r--r-- 1 user user 112 indexdrwxr-xr-x 2 user user 4096 info/drwxr-xr-x 3 user user 4096 logs/drwxr-xr-x 7 user user 4096 objects/drwxr-xr-x 4 user user 4096 refs/
  • 37. Устройство репозитория Git Весь репозиторий в папке .git/ branches/ Конфигурация COMMIT_EDITMSGЦентральная config часть descriptionрепозитория HEAD hooks/ Скрипты для index автоматизации info/ logs/ objects/ refs/ Список файлов для исключения (то же что и .gitignore)

×