SlideShare a Scribd company logo
1 of 19
Git в Agile-проектах



    Александр Коротких
       @alexkorotkikh

         www.akvelon.com.ua
            Kharkov, UA
Disclaimer:
Git ~ Hg ~ Bzr




   www.akvelon.com.ua
Коротко о проекте
•   web-приложение на Java
•   американский заказчик, компания-разработчик ПО
•   scrumbutt
•   команда
     у них - PO + SM
     у нас - tech lead, middle dev, 2 junior dev
• SVN




                                 www.akvelon.com.ua
SVN?




www.akvelon.com.ua
git-svn
• git svn clone http://svn.example.com/repo
• git svn rebase
• git svn dcommit




                          www.akvelon.com.ua
Code review




   www.akvelon.com.ua
Code review




              www.akvelon.com.ua
"Commit per feature" rule




         www.akvelon.com.ua
"Commit per feature" rule (I)
1. Большие задания




                     www.akvelon.com.ua
"Commit per feature" rule (II)
2. Совместная работа надо одним заданием




                       www.akvelon.com.ua
Экспериментальный код




        www.akvelon.com.ua
Экспериментальный код
•   Задача – не засорять trunk очень нестабильным кодом.
•   Решение – выполнять всю работу в локальной ветке.
•   Все изменения из транка легко вливаются в рабочую ветку.
•   Наоборот – только по окончанию работы.




                           www.akvelon.com.ua
Поиск коммита –
 источника бага




     www.akvelon.com.ua
Поиск коммита - источника бага
• Задача – быстро найти код, который привѐл к багу.
• Проблема – этот код был написан давно.
• Решение – бинарный поиск между точно хорошим и точно
  плохим коммитом.




                       www.akvelon.com.ua
Поиск коммита - источника бага
• Задача – быстро найти код, который привѐл к багу.
• Проблема – этот код был написан давно.
• Решение – бинарный поиск между точно хорошим и точно
  плохим коммитом.

•   git bisect start
•   git bisect bad
•   git checkout HEAD~100
•   git bisect good
•   … good, bad, bad, good …




                         www.akvelon.com.ua
И в заключении...




      www.akvelon.com.ua
И в заключении...




 Главный источник багов


      www.akvelon.com.ua
?




www.akvelon.com.ua
Спасибо за внимание!
       @alexkorotkikh
  http://alexkorotkikh.com




          www.akvelon.com.ua

More Related Content

Viewers also liked

Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - KievJohannes Brodwall
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Andrew Mayorov
 
Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Dmytro Mindra
 
Wake up Neo... Dependencies have you
Wake up Neo... Dependencies have youWake up Neo... Dependencies have you
Wake up Neo... Dependencies have youIvan Mosiev
 
Crucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментCrucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментMaxim Kuzmich
 
Acceptance testing in the land of the startup
Acceptance testing in the land of the startup Acceptance testing in the land of the startup
Acceptance testing in the land of the startup Joseph Wilk
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance TestingMairbek Khadikov
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautifulMeaghan Lewis
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET WorldDima Pasko
 
Инфраструктура Автоматизации Функционального Тестирования Web Приложений
Инфраструктура Автоматизации Функционального Тестирования Web ПриложенийИнфраструктура Автоматизации Функционального Тестирования Web Приложений
Инфраструктура Автоматизации Функционального Тестирования Web ПриложенийAndrii Dzynia
 
Conventions
ConventionsConventions
Conventionsploeh
 
XPDays Ukraine: Legacy
XPDays Ukraine: LegacyXPDays Ukraine: Legacy
XPDays Ukraine: LegacyVictor_Cr
 

Viewers also liked (20)

Evergreen build
Evergreen buildEvergreen build
Evergreen build
 
Experience Agile Programming - Kiev
Experience Agile Programming - KievExperience Agile Programming - Kiev
Experience Agile Programming - Kiev
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
 
Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011Craftsmanship - XP Days 2011
Craftsmanship - XP Days 2011
 
Wake up Neo... Dependencies have you
Wake up Neo... Dependencies have youWake up Neo... Dependencies have you
Wake up Neo... Dependencies have you
 
Crucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментCrucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструмент
 
Acceptance testing in the land of the startup
Acceptance testing in the land of the startup Acceptance testing in the land of the startup
Acceptance testing in the land of the startup
 
Continuous Performance Testing
Continuous Performance TestingContinuous Performance Testing
Continuous Performance Testing
 
Agile design
Agile design Agile design
Agile design
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautiful
 
Ideal Deployment In .NET World
Ideal Deployment In .NET WorldIdeal Deployment In .NET World
Ideal Deployment In .NET World
 
Tdd and decomposition
Tdd and decompositionTdd and decomposition
Tdd and decomposition
 
Инфраструктура Автоматизации Функционального Тестирования Web Приложений
Инфраструктура Автоматизации Функционального Тестирования Web ПриложенийИнфраструктура Автоматизации Функционального Тестирования Web Приложений
Инфраструктура Автоматизации Функционального Тестирования Web Приложений
 
Agility in Testing
Agility in TestingAgility in Testing
Agility in Testing
 
Code review psyhology
Code review psyhologyCode review psyhology
Code review psyhology
 
Solid code via tdd
Solid code via tddSolid code via tdd
Solid code via tdd
 
Conventions
ConventionsConventions
Conventions
 
Agile architecture
Agile architectureAgile architecture
Agile architecture
 
Mockist vs Classicist
Mockist vs ClassicistMockist vs Classicist
Mockist vs Classicist
 
XPDays Ukraine: Legacy
XPDays Ukraine: LegacyXPDays Ukraine: Legacy
XPDays Ukraine: Legacy
 

Similar to Git in Agile project - XP Days Ukraine 2011

Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Yandex
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Ontico
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned Alexander Syrotenko
 
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Ivan Korolev
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложенияDenis Izmaylov
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахITCrowd Almaty
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...MoscowJS
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 
Мы делили апельсин
Мы делили апельсинМы делили апельсин
Мы делили апельсинOlga Lavrentieva
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...it-people
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаYandex
 
Быстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковБыстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковCodeFest
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
 

Similar to Git in Agile project - XP Days Ukraine 2011 (20)

Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"Андрей Сибирёв "Ваше собственное облако — война за независимость"
Андрей Сибирёв "Ваше собственное облако — война за независимость"
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
 
Изоморфные react-приложения
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Мобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещахМобильность на Колёсах: об инструментах и полезных вещах
Мобильность на Колёсах: об инструментах и полезных вещах
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Мы делили апельсин
Мы делили апельсинМы делили апельсин
Мы делили апельсин
 
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
DUMP-2012 - Управление разработкой - "Опыт смены системы контроля версий" Кон...
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Иван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проектаИван Крутов - Автоматизация сборки Java-проекта
Иван Крутов - Автоматизация сборки Java-проекта
 
Быстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоковБыстрое построение backendов c помощью реактивных потоков
Быстрое построение backendов c помощью реактивных потоков
 
D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"D2D Pizza JS Илья Беда "Куда мы все катимся?"
D2D Pizza JS Илья Беда "Куда мы все катимся?"
 

Git in Agile project - XP Days Ukraine 2011

  • 1. Git в Agile-проектах Александр Коротких @alexkorotkikh www.akvelon.com.ua Kharkov, UA
  • 2. Disclaimer: Git ~ Hg ~ Bzr www.akvelon.com.ua
  • 3. Коротко о проекте • web-приложение на Java • американский заказчик, компания-разработчик ПО • scrumbutt • команда  у них - PO + SM  у нас - tech lead, middle dev, 2 junior dev • SVN www.akvelon.com.ua
  • 5. git-svn • git svn clone http://svn.example.com/repo • git svn rebase • git svn dcommit www.akvelon.com.ua
  • 6. Code review www.akvelon.com.ua
  • 7. Code review www.akvelon.com.ua
  • 8. "Commit per feature" rule www.akvelon.com.ua
  • 9. "Commit per feature" rule (I) 1. Большие задания www.akvelon.com.ua
  • 10. "Commit per feature" rule (II) 2. Совместная работа надо одним заданием www.akvelon.com.ua
  • 12. Экспериментальный код • Задача – не засорять trunk очень нестабильным кодом. • Решение – выполнять всю работу в локальной ветке. • Все изменения из транка легко вливаются в рабочую ветку. • Наоборот – только по окончанию работы. www.akvelon.com.ua
  • 13. Поиск коммита – источника бага www.akvelon.com.ua
  • 14. Поиск коммита - источника бага • Задача – быстро найти код, который привѐл к багу. • Проблема – этот код был написан давно. • Решение – бинарный поиск между точно хорошим и точно плохим коммитом. www.akvelon.com.ua
  • 15. Поиск коммита - источника бага • Задача – быстро найти код, который привѐл к багу. • Проблема – этот код был написан давно. • Решение – бинарный поиск между точно хорошим и точно плохим коммитом. • git bisect start • git bisect bad • git checkout HEAD~100 • git bisect good • … good, bad, bad, good … www.akvelon.com.ua
  • 16. И в заключении... www.akvelon.com.ua
  • 17. И в заключении... Главный источник багов www.akvelon.com.ua
  • 19. Спасибо за внимание! @alexkorotkikh http://alexkorotkikh.com www.akvelon.com.ua