eleks.comeleks.com
Version Control
Tools overview. Branching strategy.
Як виглядає робота над проектом?*
Пишеш
код
Зберігаєш
Вносиш
зміни
Зберігаєш
зміни
*для 1го девелопера
*для команди
Як виглядає робота над проектом?*
Ще одна проблема
Чи можливі подорожі в минуле?
Як задати координати?
Покоління систем контролю версій
1
• Паралельна розробка обмежувалась блокуваннями (lock) файлів.
• Лише одна людина могла працювати над файлом в будь-який момент часу.
• Приклади: RCS, SCCS
2
• Набагато поблажливіші до одночасних модифікацій. Одна примітка:
• Користувачі повинні об’єднати свої зміни з іншими перед їхньою фіксацією
• Приклади: CVS, SourceSafe, Subversion (SVN), Team Foundation Server (TFS)
3
• Об’єднання (merge) та фіксація (commit) відокремлені
• Приклади: Bazaar, Git, Mercurial
Централізовані СКВ
Сервер
Репозиторій
Робоча копія
PC#1
Робоча копія
PC#2
Робоча копія
PC#3
Commit
Update
Apache Subversion (SVN)
• Кожен коміт – атомарна транзакція
• Зберігається повна історія змін файлів та каталогів
• Підтримка розгалужень (branching)
• Створення нових гілок – дешева по ресурсам
операція
• Однаково ефективна робота як з текстовими, так і з
бінарними файлами
• Підтримка блокування (locking) файлів
• Вага репозиторію пропорційна вазі змін, а не вазі
самих даних
• Підтримка автоматичного злиття
• Підтримка тегів
Команди SVN
Create
Checkout
Update
Commit
Add
Edit
Rename/Move
Delete
Cleanup
Команди SVN
Status
Diff
Revert
Log
Tag
Branch
Switch
Merge
Resolve
Lock
Merge conflicts
Це - маркери конфліктів.
Вони з’являються, коли ви
знаходитесь в режимі об’єднання,
а СКВ, з якихось причин, не
змогла автоматично об’єднати
зміни.
Якісь дивні символи в коді..
start =
expression
validchar =
[0-9a-zA-Z_?!+-=@#$%^&*/.]
integer =
<<<<<<< HEAD
digits:[0-9]+
{ return digits.join("");
}
=======
sign:"-"* digits:[0-9]+
{ return sign +
digits.join(""); }
>>>>>>> gh-pages
Розподілені СКВ
Сервер
Репозиторій
Робоча копія
PC#1
Репозиторій
Робоча копія
PC#2
Репозиторій
Робоча копія
PC#3
Репозиторій
Pull
Push
Git
• Успадковує багато можливостей централізо-
ваних СКВ
• Зберігає дані у вигляді знімків, а не змін до
файлів
• Більшість операцій локальні (=швидкі), можна
переглядати історію та вносити зміни до свого
локального репозиторію без з’єднання з сервером
• Вбудована на нижчому рівні підтримка цілісності
• Три основні стани файлів в Git-репозиторії:
committed, modified, staged
• Наявність команд на всі випадки життя
Деякі команди Git
Clone
Pull
Push
Fetch
Config
Stash
Rebase
Reset
Centralized workflow
Update
Додавання
змін
Фікси
Merge,
Resolve
Commit
Feature Branch Workflow
GitFlow Model
Важливість коментування
Knowledge is having the right answer.
Intelligence is asking the right question.
- Anonymous
“
Рекомендована література
1. Eric Sink «Version Control by Example» («The Hitchiker's
Guide to Distributed Version Control»)
2. Scott Chacon and Ben Straub «Pro Git»
3. Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato
«Version Control with Subversion»
Version control

Version control

Editor's Notes

  • #2 https://www.quora.com/What-is-the-difference-between-version-control-and-source-control
  • #20 Спрощена схема. Повна версія: http://nvie.com/img/git-model@2x.png
  • #21 Ще було б кул додати слайд про ігнори, порівняльну таблицю Git та SVN. Декілька слайдів про інші сорс контроли