• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
iweb01
 

iweb01

on

  • 150 views

Капустник iWEB

Капустник iWEB

Statistics

Views

Total Views
150
Views on SlideShare
150
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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

    iweb01 iweb01 Presentation Transcript

    • Привет, друзья!
    • Капустник — самодеятельное, для узкого круга «своих», шуточное представление, основанное на юморе и сатире. © wikipedia.org
    • Системы контроля версий
    • Что у нас есть? • Много проектов (уже больше 300); • Разные языки программирования; • Разные версии продуктов; • Разные команды; • Много разработчиков (тех, которые вносят изменения).
    • Чего мы хотим? • Хранить свой код в едином хранилище; • … что еще?
    • FTP?
    • А чего мы добиваемся? • Контроль изменений: • • • Откат; Просмотр изменений между ревизиями. Коллективная работа: • Слияние изменений; • Разрешение конфликтов.
    • VCS!
    • VCS (Version Control System) — Система контроля версий • SVN; • GIT; • … и др.: (Mercurial, Bazaar, Darcs, CVS, …).
    • Плюшки? • Возможность одновременных изменений; • Механизм транзакций; • Дельта-кодирование; • Разветвление истории; • Различный подход к бинарным и текстовым форматам.
    • SVN • Централизованная; • Ревизии для проекта в целом; • В каждой папке проекта — служебные файлы (до 1.7); • Можно подтягивать изменения для конкретной папки/файла.
    • SVN: История изменений
    • GIT • Децентрализованная: • отказоустойчивая; • всегда с собой. • Ревизии для проекта в целом; • Номер ревизии — SHA-1; • Служебные файлы только в корне репозитория; • Нелогичный синтаксис некоторых команд.
    • BLOB, tree, commit • BLOB — конкретная версия файла; • Tree — совокупность файлов в разных директориях; • Commit — Tree + meta.
    • Объекты в GIT: BLOB $ echo 'version 1' > test.txt $ git hash-object -w test.txt 83baae61804e65cc73a7201a7252750c76066a30 $ echo 'version 2' > test.txt $ git hash-object -w test.txt 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a
    • Объекты в GIT: BLOB $ find .git/objects -type f .git/objects/1f/7a7a472abf3dd9643fd615f6da379c4acb3e3a .git/objects/83/baae61804e65cc73a7201a7252750c76066a30 $ git cat-file -p 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a version 2
    • Объекты в GIT: Tree $ git cat-file -p master^{tree} 100644 blob a906cb2a4a904a152e80877d4088654daad0c859 README 100644 blob 8f94139338f9404f26296befa88755fc2598c289 Rakefile 040000 tree 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0 lib $ git cat-file -p 99f1a6d12cb4b6f19c8655fca46c3ecf317074e0 100644 blob 47c6340d6459e05787f644c2447d2595f5d3a54b simplegit.rb
    • Объекты в GIT: Commit $ git update-index --add --cacheinfo 100644 83baae61804e65cc73a7201a7252750c76066a30 test.txt $ git write-tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579 $ git cat-file -p d8329fc1cc938780ffdd9f94e0d364e0ea74f579 100644 blob 83baae61804e65cc73a7201a7252750c76066a30 test.txt
    • Объекты в GIT: Commit $ echo 'first commit' | git commit-tree d8329f fdf4fc3344e67ab068f836878b6c4951e3b15f3d $ git cat-file -p fdf4fc3 tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579 author Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700 committer Ivan Ivanov <i.ivanov@2gis.ru> 1243040974 -0700 first commit
    • Объекты в GIT: Commit $ git log --stat fdf4fc commit d8329fc1cc938780ffdd9f94e0d364e0ea74f579 Author: Ivan Ivanov <i.ivanov@2gis.ru> Date: Fri May 22 18:09:34 2009 -0700 first commit test.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
    • GIT: Garbage collector $ git gc Counting objects: 17, done. Delta compression using 2 threads. Compressing objects: 100% (13/13), done. Writing objects: 100% (17/17), done. Total 17 (delta 1), reused 10 (delta 0)
    • GIT: Фишки • Локальный и удаленный репозиторий; • Очистка мусора (pack-объекты); • Вместо полного имени ревизии можно указывать короткое; • Продвинутая работа с ветками.
    • Операции в GIT • Fetch • Pull • Push • Stash • Rebase
    • Магия GIT: Rebase $ git rebase -i HEAD~3 pick f7f3f6d changed my name a bit pick 310154e updated README formatting and added blame pick a5f4a0d added cat-file # Rebase 710f0f8..a5f4a0d onto 710f0f8 # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit
    • Редактирование коммитов edit f7f3f6d changed my name a bit pick 310154e updated README formatting and added blame pick a5f4a0d added cat-file $ git rebase -i HEAD~3 Stopped at 7482e0d... updated the gemspec to hopefully work better You can amend the commit now, with git commit --amend Once you’re satisfied with your changes, run git rebase --continue
    • Уплотнение коммитов pick f7f3f6d changed my name a bit squash 310154e updated README formatting and added blame squash a5f4a0d added cat-file # This is a combination of 3 commits. # The first commit's message is: changed my name a bit # This is the 2nd commit message: updated README formatting and added blame # This is the 3rd commit message: added cat-file
    • Разбиение коммитов pick f7f3f6d changed my name a bit edit 310154e updated README formatting and added blame pick a5f4a0d added cat-file $ git reset HEAD^ $ git add README $ git commit -m 'updated README formatting' $ git add lib/simplegit.rb $ git commit -m 'added blame' $ git rebase --continue
    • Спасибо!