Version control

Version control is a system for managing files over many different versions, and - in software development - is generally contributed to by many developers. The principal purpose of any version control system (VCS) is to find a solution that enables all users to work on the codebase at the same time.

At the core of any version control system is a repository, which acts as the central data store for all the different files - similar to a file server. However, unlike a file server, the repository contains the entire history of the project and all revisions that have been made.

If the repository is the central data store, it is logical for each user to have a local store of the data, allowing them to work on it. This is called a working copy. In Visual Studio for Mac your working copy will appear just as any other local directory on your machine, allowing you to read from and write to any of the files. However, because Visual Studio for Mac has Version control system integration, you can leverage the power of Subversion and Git without leaving the IDE.

Subversion is a centralized version control system. This means that there is a single server that contains all files and revisions from which users can check out any version of any file. When files are checked out from a remote Subversion repository, the user will get a snapshot of the repository at that point in time.

Git is a distributed version control system that allows teams to work on the same documents simultaneously. This means that there might a single server that contains all the files, but whenever a repository is checked out from this central source, the entire repository is cloned locally to your machine.

Basic Concepts

Visual Studio for Mac provides support for both Git and Subversion version control systems. The guides linked below explore setting up Git and Subversion repositories through Visual Studio for Mac, as well as simple functionality such as reviewing, committing, and pushing changes.