What is a Monorepo?
What is a Multirepo?
What is the purpose of branching in version control?
To develop and test new ideas away from the main system.
What is Feature-Based Development?
What is Trunk-Based Development?
What are the 7 essential practices of version control?
Why should commit tests be run locally before committing code?
To prevent breaking the build, which slows down other developers.
Why should developers wait for commit tests to complete?
Monitoring commit test progress ensures that failures can be resolved quickly, as tests run automatically in script files with thousands of tests.
Why should developers avoid committing on a broken build?
New changes added to a broken build can cause compounding failures, making debugging much more difficult.
Why should developers never go home on a broken build?
Why is it common practice to commit at the start of the day rather than the end?
So that if a build breaks, the developer is available to fix it instead of leaving it for others.
What does it mean to be ‘prepared to revert’ in version control?
Like a ‘go around’ in aviation
Why should developers avoid commenting out tests?
Commenting out tests is bad practice as it prevents future bugs from being detected.
What does ‘taking responsibility for breakages’ mean in version control?
If a commit breaks tests (even those written by others), the developer who committed must resolve the issue.
What are the three benefits of a version control system according to D. Farley?
What are the three models of version control?
Explain each
How does a mono-repo provide the three benefits of version control?
Why might a multi-repo not provide the three benefits of version control?
Because the communications between components, and the specification of which version of the components work together, are not stored anywhere
What are two solutions to the multi-repo problem (not providing the version control benefits)?
How do the solutions to the multi-repo problem restore the three benefits of version control?
Why is multi-repo’ considered the ‘worst of all worlds’?
Because components cannot be developed or deployed independently.