0% found this document useful (0 votes)
139 views6 pages

About Version Control

Version control systems allow recording changes to files over time so specific versions can be recalled later. Local systems store changes on individual machines, while centralized systems store a central database with client checkouts. Distributed version control systems (DVCS) fully mirror repositories on clients, so if the server fails another client can restore it. Git differs from other VCS by thinking of data as snapshots of file systems rather than file differences, and most operations are local.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
139 views6 pages

About Version Control

Version control systems allow recording changes to files over time so specific versions can be recalled later. Local systems store changes on individual machines, while centralized systems store a central database with client checkouts. Distributed version control systems (DVCS) fully mirror repositories on clients, so if the server fails another client can restore it. Git differs from other VCS by thinking of data as snapshots of file systems rather than file differences, and most operations are local.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

About Version Control

Version control is a system that records changes to a file or set of files over time
so that you can recall specific versions later. Not just software source code.

Local Version Control systems

One of the most popular VCS tools was a system called RCS, which is still
distributed with many computers today. RCS works by keeping patch sets (that

About Version Control 1


is, the differences between files) in a special format on disk, it can then re-create
what any file looked like at any point in time by adding up all the patches.

Centralized Version Control Systems

for collaboration
ex, CVS, Subversion, and Preforce
This setup offers many advantages, especially over lcoal VCSs. For example,
everyone knows to a certain degree what everyone else in the project is doing.
Administrators have fine-grained control over who can do what, and it's far easier
to administer a CSCS than it is to deal with local databases on every client.
However, this setup also has some serious downsides. The most obvious is the
single point of failure that the centralized server represents. If that server goes
down for an hour, then during that hour nobody can collaborate at all or save
versioned changes to anything they're working on. If the hard disk the central
About Version Control 2
database is on becomes corrupted, and proper backups haven't been kept, you
lose absolutely everything - the entire history of he project except whatever
single snapshots people happen to have on their local machines. Local VCS
systems suffer from this same problem - whenever you have the entire history of
the project in a single place, you risk losing everything.

Distributed Version Control Systems


like Git, Mercurial, Bazaar, Darcs
This is where Distributed Version Control Systems DVCSs) step in. In a DVCS,
clients don't just check out the lates snapshot of the files; rather, they fully mirror
the repository, including its full history. Thus, if any server dies, and these systems
were collaborating via that server, any of the client repositories can be copied
back up to the server to restore it. Every clone is really a full backup of the data.

About Version Control 3


Furthermore, many of theses systems deal pretty well with having several remote
repositories they can work with, so you can collaborate with different groups of
people in different ways simultaneously within the same project. This allows you

About Version Control 4


to set up several types of workflows that aren't possible in centralized systems,
such as hierarchical models.

Snapshots, not Differences


The major difference between Git and any other VCS Subversion and friends
included) is the way Git thinks about its data. Conceptually, most other systems
store information as a list of file-based changes. These other systems CVS,
Subversion, Perforce, Bazaar, and so on) think of the information they store as a
set of files and the changes made to each file over time. (commonly described as
delta-based version control)

Git doesn't think of its data this way. Instead, the data is more like a series of
snapshots of a miniature filesystem.
Every time you commit, or save the state of your project, Git basically takes a
picture of what all your files look like at that moment and stores a reference to
that snapshot. To be efficient, if files have not changed, Git doesn't store the file
again, just a link to the previous identical file it has already stored. Git thinks
about its data more like a stream of snapshots.

About Version Control 5


Nearly Every Operation is Local

About Version Control 6

You might also like