Patterns for Managing Source Code Branches - MadJFish/Interview-Questions GitHub Wiki

Reference: Patterns for Managing Source Code Branches

Base Patterns

Integration: how multiple developers combine their work into a coherent whole.
Path to Production: manage the route from an integrated code base to a product running in production.

Source Branching

branch: a particular sequence of commits to the code base.
head/tip: the latest commit in that sequence.
Series Commits
Split and Merge
Branch and Tag
codeline: a particular sequence of versions of the code base.
textual conflict: conflict when two developers change the same variable/code.
semantic conflict: conflict when two developers change the difference parts of the code, the text merges without a problem, but the system still does not work.
Leroy Branch

Mainline

mainline: a special codeline that we consider to be the current state of the team's code. (master / trunck)
central repository: a shared repository that acts as the single point of record for the project and is the origin for most clones.

Healthy Branch

self testing code: this development practice means that as we write the production code, we also write a comprehensive suite of automated tests so that we can be confident that if these tests pass, then the code contains no bugs.
commit suite: often referred to as "the unit tests", which can run quickly, but still be reasonably comprehensive.

Integration Patterns

Mainline Integration

Developers integrate their work by pulling from mainline, merging, and - if healthy - pushing back into mainline Mainline Integration Checkout
Other Update
Mainline Integration Pull
Mainline Integration Fuse
Mainline Integration Integrate

Feature Branching

Put all work for a feature on its own branch, integrate into mainline when the feature is complete
FB Start
FB Pull
FB Integrate

Integration Frequency

Definition: how often we do integration has a remarkably powerful effect on how a team operates.
Low Freq Start
Low Freq M1
Low Freq VM

⚠️ **GitHub.com Fallback** ⚠️