git multi repos

21
Version Control System Git Multi Repos JULIEN PLÉE – DEPUTY CTO AURÉLIE VALÉRY – R&D MANAGER RACHID AGOUDAR – CHIEF SOFTWARE ARCHITECT EMMANUEL GUÉRIN – SOFTWARE ARCHITECT

Upload: julien-plee

Post on 16-Feb-2017

244 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Git multi repos

Version Control SystemGit Multi Repos

JULIEN PLÉE – DEPUTY CTOAURÉLIE VALÉRY – R&D MANAGERRACHID AGOUDAR – CHIEF SOFTWARE ARCHITECTEMMANUEL GUÉRIN – SOFTWARE ARCHITECT

Page 2: Git multi repos

Git Multi-repository Goals :

◦ allow each team to work in its own Git environment◦ Guarantee stability of some chosen branches using CI to realize the merge operations

How : ◦ by using the Multi-repository pattern, giving each team its own repository and all teams sharing a

master repository

Page 3: Git multi repos

Git Multi ReposFEATURE DEVELOPMENT

Page 4: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Initial status

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Page 5: Git multi repos

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

1 – Teammate checkouts a new branch “123” from “arc/arc_Sprint-stable” or “arc/arc_Sprint” and develops a task

Repositories

123

Page 6: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – The Teammate commits, and pushes branch “123” to “arc/123”. All team “arc” can now work on it

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 7: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – In the same time, “Root/Sprint” received some new commit from “career-fun” repository

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 8: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Jenkins validates the commit and merges it in the branch “Root/Sprint-stable”. Team “fun” fixes potential errors

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

TA_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 9: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate pulls “Root/Sprint-stable” into their team branch “arc_Sprint”

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 10: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate pushes “arc_Sprint” into “arc/arc_Sprint”

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 11: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Jenkins validates and merges “arc/arc_Sprint” in “arc/arc_Sprint-stable”. Team “arc” fixes potential errors

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

A Teammate could always use “arc/arc_Sprint-stable”if he wants to be sure to start from a stable commit

Page 12: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate merges “arc/123” into “arc_Sprint”

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 13: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate pushes “arc_Sprint” into “arc/arc_Sprint” and Jenkins validates it. Team “arc” fixes potential errors

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

123

123

Page 14: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate pulls “arc/arc_Sprint-stable” into “arc_Sprint” and pushes it on “Root/Sprint”

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Note : It will sometimes be needed toMerge “Root/Sprint” into “arc_Sprint” as other teams could have already push something in itSo there is no warranty that “arc_Sprint” is stable and the team could be fixing it after

Page 15: Git multi repos

Git Multi ReposHOTFIX DEVELOPMENT

Page 16: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Initial status

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Page 17: Git multi repos

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Workstation

1 – Teammate checkouts a new branch “123” from “root/qualif-stable” and fixes the bug

Repositories

Bug-fix

Bitbucket Servers

Page 18: Git multi repos

Teammate Repository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate merges branch “bug-fix” into “Root/Qualif”

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

arc_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Bug-fix

Page 19: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Jenkins validates the commit and merges it in the branch “Root/Sprint-stable”. Team “fun” fixes potential errors

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

TA_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Bug-fix

123

Page 20: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate can now realize a new release with the up-to-date “Root/Qualif-stable” branch

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

TA_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Bug-fix

123

Page 21: Git multi repos

TeammateRepository

arc_Sprint

Environment

Bitbucket Servers

Bitbucket Servers

Workstation

0 – Teammate merges “Root/Qualif-stable” into “Root/Dev” and “Root/Sprint” (not displayed) and Jenkins validates dev

RootRepository

Sprint-stable

Dev-stable

Qualif-stable

Sprint

Dev

Qualif

career-arcRepository

career-funRepository

TA_Sprint-stable fun_Sprint-stablearc_Sprint fun_Sprint

Repositories

Bug-fix

123