So first of all, what is a version
control system? A version control system or VCS,
is a system that allows you to manage
multiple revisions of the same unit of information. For
example of documents, of source files or any
other item of that sort. And as the graphical
depiction shows, a VCS allows a multiple actors.
Here we have four, to cooperate and share files.
Now, let's drill into this concept in a little
more detail. And let's do that by discussing why
is VCS useful, especially in the context of software
engineering and of software development. So first of all,
using a version control system enforces discipline, because it
manages the process by which the control of items
passes from one person to another. Another important aspect
of VCS is that it allows you for archiving versions.
So you can store subsequent versions of source controlled
items into a VCS. And not only you can
store versions, you can also maintain a lot of
interesting and important historical information
about these versions. For example,
a VCL will store information such as, who is
the author for this specific version stored in the system.
Or, for another example, on what day and what
time that version was stored. And a lot of other
interesting information about the specific version of the
item. Information that you can then retrieve and for
example, use to compare versions. Obviously, the fact of
having a central repository in which all these items
are stored enables collaboration, so people can more easily
share data, share files, share documents through the use
of VCS. And I'm sure that you all had
the experience of deleting a file by mistake or
modifying a file in the wrong way, or in the
most common case of changing something in your code for instance.
And breaking something and not being able to go back
to a version that was working. Not remembering, for example, what
is that you changed that broke the code. In all
these cases a version control system can be extremely useful because
it will allow you to recover from this accidental deletions
or edits. And for example, to go back of yesterdays version
that was working perfectly, and also to compare, for example, yesterdays
version with today version and see what is that you changed.
Finally, a version control system will normally also allow you to
conserve and save disk space on both the source control client
and on the server. Why? Well, for instance because it's centralizing
the management of the version. So instead of having many copies
spread around, you'll have only one central point where these copies
are stored or a few points where these copies are stored.
In addition, version control system often
uses efficient algorithms to store these changes.
And therefore, you can keep many versions without taking up too much space.