2. История изменений
● Нужна ли история изменений?
● Кому и зачем она нужна?
● Откуда выросли современные
распределенные системы управления
исходным кодом.
● git, типовые сценарии, git magic.
3. Зачем и как управлять
версиями
● Архивирование
● RCS
● CVS
● SVN
● Distributed RCS
● DRCS, DCVS, DSCM(S), DCMS etc.
8. Объединение веток
● Всё плохо
● При повторных слияниях всё еще хуже
● Нужна метаинформация
● 3-way merge
9. Commit often
● Это плохо?
– Нет.
● Это хорошо?
– Нет!
● Создать ветку.
– Но она никому не нужна.
10. Желание свободы
● Работа без сервера
● Независимая история, независимые
деревья
● Взаимодействие разработчиков
11. Откуда взялся git
● Ядро разрабатывалось без SCMS o_0
● Тарболы, патчи, списки рассылки
● Проприетарный bitkeeper
● Oops!
12. Требования к SCM
● Распределенность
● Скорость работы (ПО, пользователя)
● Компактное хранение
● Целостность
● Гибкость и “удобство работы”
13. Git – это ужасно
● Learning curve
● Согласованность интерфейса
● Количество операций
– 75 “high level"
– 57 “low level"
● 20 способов сделать одно и то же
14. Как устроен git
● git = object database + refs
● Objects
– Commit Object
– Tree Object
– Blob Object
– Tag Object
● Trust
● Refs
– Branch
– Tag
15. Index
● Временное хранилище для
взаимодействия с репозиторием
● Хранилище метаинформации для
ускорения работы
21. Разрешение конфликтов в git
● Умный git
● Стратегии объединения изменений
● mergetool
● Git не понимает смысл кода, он просто
управляет изменениями