Version control systems
Real projects can't do without them
- Allow multiple developers to contribute on the same project. Each developer can see the latest changes from the others, or choose to stick with older versions of some components.
- Allow to keep track of changes, and revert them if needed.
- Allow developers to have their own development branch (branching)
- Supposed to help developers resolving conflicts with different branches (merging)
Traditional version control systems
Rely on a central repository. The most popular open-source ones:
- CVS - Concurrent Versions System
- Still quite popular in enterprise contexts. Almost no longer exists in the open-source community.
- Should no longer be used for new projects
- http://en.wikipedia.org/wiki/Concurrent_Versions_System
- Subversion
- Created as a replacement of CVS, removing many of its limitations.
- Commits on several files, proper renaming support, better performance, etc.
- The user interface is very similar to CVS
- http://en.wikipedia.org/wiki/Subversion_(software)
Distributed source control systems
No longer have a central repository
- More adapted to the way the Free Software community develops software and organizes
- Allows each developer to have a full local history of the project, to create local branches. Makes each developer's work easier.
- People get working copies from other people's working copies, and exchange changes between themselves. Branching and merging is made easier.
Make it easier for new developers to join, making their own experiments without having to apply for repository access.
Git
- Initially designed and developed by Linus Torvalds for Linux kernel development
- Extremely popular in the community, and used by more and more projects (kernel, U-Boot, Barebox, uClibc, GNOME, X.org, etc.)
- Outstanding performance, in particular in big projects
- http://en.wikipedia.org/wiki/Git_(software)
- Mercurial
- Another system, created with the same goals as Git.
- Used by some big projects too
- http://en.wikipedia.org/wiki/Mercurial http://en.wikipedia.org/wiki/Version_control_systems#Distributed_revision_control