What is a control system and why do I need one?
A control system is a physical or logical value that needs to be controlled in order to meet a certain criteria. For example, think of an airplane landing; There has to be a determined inclination and acceleration in order for the plane to land without trouble. What, or Who is in charge of making sure this criteria is fulfilled? To control a system, you first need to know what you want it to do, or rather what it is supposed to do, and how well is it doing it. There is a radar at the end of the runway where a plane is landing that tells it how far it is from the appropiate landing situation(Too far to the left, going faster or slower, etc.) Think of this radar as the control system for the airplane, without it there wouldn't be a guideline for the pilot to know if the plane is going to land successfully.
Linux Control Systems
With Linux, there are Version Control Systems (VCS) that are in charge of the management of changes to documents, programs, databases, and all kinds of information. Changes are usually identified by a letter or number, and they're called revisions. For example, you download and install the third release of a software called “MusicLibrary”. You would be installing ML_03.exe on your Windows machine, that means the third revision of the software. Revisions are usually associated to timestamps and a person or group of people that made the change. Revisions are useful to restore data in case of a problem.
Git is a widely used, open source control system, based on the Distributed Model (each developer works directly with his or her own local repository, and changes are shared between repositories as a separate step.)
One of Git's key features is its branching model: A branch, at its core, is a unique series of code changes with a unique name. Each repository can have one or more branches.
Continuous Integration as a Software Practice
“Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations
per day.” - Martin Fowler
Practicing continuous integration won't kill erros and bugs, but it will help finding and removing them. Since the integrations are done in quick succession, it's easier to find what went wrong when an error emerges, so you'll me saving time to spend elsewhere.
Automatic Deployment with Git
Remember the airplane radar example? Well, most VCS (Including Git) have some kind of custom scripting for when certain events happen. These scripts are called hooks, and they are in charge of automatically doing something when something else happens. There are two groups of hooks: client-side and server-side. Client-side hooks are executed when things like commiting and merging happen, and server-side hooks run on network operations such as receiving pushed commits.
There are three main server hooks: pre-receive, post-receive and update. Pre-receive is executed as soon as the server receives a push, update is similar but it executes once for each branch, and post-receive is executed when a push is completely finished.
Git is one of many version control systems, the thing that makes it stand out from the crowd is its solid foundation, Git does its job and it does it well. It may not have the fanciest way of portraying things, It might compete with other systems in terms of performance, but Git has a really good base, which foreshadows a promising future with a lot of potential".