Download - 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
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