L9 - Version Control 1 Flashcards

1
Q

What are the 4 functionalities a modern version control system supports? Define each…

A

Change Management: Quickly and reliably get any version of the file.

Branch Management: Diverge and combine work streams as needed in a conflict free way.

Build Management: Script activities to be carried out automatically during the build.

Collaboration: Teams across time zones and location can collaborate simultaneously.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the 2 repo organisation types?

A

Mono-repo
Multi-repo

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Define Mono-repo

A

One giant repository for all microservices. Any commit triggers the production of multiple microservices.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the pros and cons of Mono-repo?

A
  • Pros:
    • Service code is visible and atomically changeable
    • Service code is reusable
  • Cons:
    • Weak or Strong service ownership model must be chosen
    • Knowing what needs to be redeployed is hard
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Define Multi-repo

A

A one repo per service policy. Any commit triggers the production of the associated service.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the pros and cons of Multi-repo?

A
  • Pros:
    • Strong service ownership model
    • Knowing what needs to be (re)deployed is easy.
  • Cons:
    • Service code is not all visible or atomically changeable
    • Service code is not easily reusable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the 2 branching models that can be adopted when using Version Control?

A

Feature based development
Trunk based development

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explain feature based development

A

Create new branches for each feature that needs to be developed. Branch is merged back to main upon feature completion.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the pros and cons of feature based development?

A
  • Pros:
    • Easy to build and manage multiple features.
    • Control over what is merged back into main branch, and when it’s merged.
  • Cons:
    • Merge conflicts can be very complex
    • Expertise is needed to manage and merge branches
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Explain trunk based development

A

Developers work on a single, main branch. If any feature branch is created, it’s merged into the main within minutes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are the pros and cons of trunk based development?

A
  • Pros:
    • Avoids merge conflicts
    • Main branch is always production ready
  • Cons:
    • Main branch is in a constant state of churn
    • Merge expertise are needed for the few merges that are needed
How well did you know this?
1
Not at all
2
3
4
5
Perfectly