Version Control Methods

Version Control (aka Revision Control) is the management of changes to data. Most often source code, documents, or other shared data. It also provides a means of quickly finding what exactly was changed which can be very useful when a bug has been introduced into a new version of a program, or concern is raised about a contributor.

In it's simplest form, it can be simply keeping copies of old files before making changes. Old versions can be compared to new versions with operating system tools like FC in DOS/Windows and DIFF for *nix.

Git, the defacto standard for version control; is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features. Unlike Git, which is strictly a command-line tool, GitHub provides a web-based graphical interface and desktop as well as mobile integration. It also provides access control and several collaboration features such as wikis, task management, and bug tracking and feature requests for every project

Modern, feature rich version control is supplied by programs like GIT^ or SourceGear Vault^, and is rapidly becoming an expected feature in online content storage systems like dropbox.com and Google Drive^. Drive however, has a very easy to use interface which allows collaboration and easy change tracking. Even Wikipedia.com maintains a list of past versions of each article.

Version Control is most critical in programming where it allows developers to understand the history of a piece of code, to branch out in new directions without fear of losing their way (because they can always go back), and to more easily find new bugs by looking at what changed in the code when the bug first appeared.

Choosing when to save (or "commit") changes can be automated or manual depending on the system. Some will save regularly based on time, or how much has changed, or save when there haven't been any changes for a while. Most programmers choose to save manually, when it makes sense for them. The advantage of manual commits is that each can represent a logical point in the development of the project. For example, you wouldn't want to commit after making a change that causes other parts of the code to fail, instead waiting until all the changes required to add a feature or fix a bug have been complete. On the other hand, if the changes are extensive, and will require a lot of work, you might want to commit after you change each part of the code. When to commit is a judgment call, up to the programmer.

Changes can be tracked individually for each file, or across multiple files in a project (called a "repository" in GIT). Multi-file tracking is important for work where the files are interrelated as they are in programming.

See also: