Patterns for Managing Source Code Branches - MadJFish/Interview-Questions GitHub Wiki
Reference: Patterns for Managing Source Code Branches
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.
branch: a particular sequence of commits to the code base.
head/tip: the latest commit in that sequence.
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.
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.
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.
Developers integrate their work by pulling from mainline, merging, and - if healthy - pushing back into mainline
Put all work for a feature on its own branch, integrate into mainline when the feature is complete
Definition: how often we do integration has a remarkably powerful effect on how a team operates.