Git multi repos

Post on 16-Feb-2017

240 views 0 download

transcript

Version Control SystemGit Multi Repos

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

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

Git Multi ReposFEATURE DEVELOPMENT

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

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

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

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

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

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

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

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

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

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

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

Git Multi ReposHOTFIX DEVELOPMENT

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

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

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

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

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

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