Version Control Systems
Version control systems are a
category of software tools that help a software team manage changes to source
code over time. Version control software keeps track of every modification to
the code in a special kind of database. If a mistake is made, developers can
turn back the clock and compare earlier versions of the code to help fix the
mistake.
·
Developing software without using version
control is risky, like not having backups.
·
VCS are sometimes known as SCM (Source Code
Management) tools or RCS (Revision Control System). One of the most popular VCS
tools in use today is called Git.
·
Git is a Distributed VCS, a category
known as DVCS
·
Git is free and open source.
A repository:
It can be thought as a database of changes. It contains all
the edits and historical versions (snapshots) of the project.
Copy of Work (sometimes called as
checkout):
It is the personal copy of all
the files in a project. You can edit to this copy, without affecting the work
of others and you can finally commit your changes to a repository when you are
done making your changes.
Types of Version Control Systems
The three most popular version
control systems are broken down into two main
categories, centralized and decentralized (also known as
distributed).
Centralized Version Control
The main concept of a centralized
system is that it works in a client and server relationship. The repository is
located in one place and provides access to many clients. It’s very similar
to FTP in where you have an FTP client which connects to
an FTP server. All changes, users, commit and information must be
sent and received from this central repository.
Centralized Version Control
Systems: Centralized version control systems contain just one repository
and each user gets their own working copy. You need to commit to reflecting
your changes in the repository. It is possible for others to see your changes
by updating.
Two things are required to make your changes visible to
others which are:
·
You commit
·
They update
Example:
·
Concurrent Versions System
Distributed Version Control
Systems:
Distributed version control
systems contain multiple repositories. Each user has their own repository and
working copy. Just committing your changes will not give others access to your
changes. This is because commit will reflect those changes in your local
repository and you need to push them in order to make them visible on the
central repository. Similarly, when you update, you do not get other’s changes
unless you have first pulled those changes into your repository.
To make your changes visible to others, 4 things are
required:
·
You commit
·
You push
·
They pull
·
They update
Examples:
·
Git
·
Bazaar
·
BitKeeper
· Fossil