Tool that allows to manage the changes of computer programs and allows multiple people to work on the same project
Repository: A database of changes
Working copy (checkout): Personal copy of all the files
e.g. Subversion
e.g. Git, Mercurial
2002
2005
- Fast
- Simple design
- Strong support for non-linear development
- Fully distributed
- Able to handle large progects (like Linux)
Everything is SHA-1 checksummed
fcfb90bb310742df5a745b406bebfa718fbecea4
Specify a point in history as being important
With braches you can diverge from the main line of development and continue to do work without messing with that main line
Everybody clones and work on the same branch (usually called master)
+ Easy (less conflicts)
+ Encourages small changes
- Can get messy
- Difficult to have a stable version
- Not friendly to hotfixes and CI
Every feature has its own branch
!
master
new menu
+ Better structured workflow
+ Friendly to hotfixes
- Harder to enforce
- On long branches can be hard to merge
- Requires more discipline
+ Less fear to deploy
Use branches for complex freatures