Different Kinds Of Version Control Systems and Salesforce GIT
A Version Control System is actually a system which is useful in recording changes to any specific file or even a set of files progressively so that you could recall specific version whenever you need them later. In case you are a web or graphic designer and you wish to retain every version of a layout or image, then using a Version Control System would be a really wise option. It would be allowing you to revert specific files right back to the previous state, regress the whole project back to the earlier state, compare changes and modifications over time, examine who made the last modification, which might have triggered the problem, who was responsible for introducing an issue, when and much more. Using a VCS usually implies that if you lose files or mess things up, you could easily recover. Additionally, you would be getting all this for negligible overhead. One of the most common VSSs is Git, which is bundled with Linux. An extension of a Git repository onto the web is GitHub.
Salesforce and Git
Salesforce opts for GitHub integration. Salesforce Git is used by developers, either via in-house repositories or through online repository hosts like Bitbucket, Github etc. The main challenge in implementing specialized Salesforce GitHub for Salesforce development seems to be connecting the two. According to experts, it is, therefore, very important, right from the start to come up with good build scripts, which could help in automating the various kinds of deployments, you would be requiring to do right from GitHub to Salesforce.org.
If you are interested in learning about version control systems, you must first learn about the various types of VCSs. Here are the different types of Version Control:
Local Version Control Systems
Numerous people use version control for copying files into some other directory, may be any time-stamped directory as a wiser option. This approach is pretty common as it is extremely simple. However, it is supposed to be incredibly prone to errors. It is pretty much possible for you to forget precisely which directory you are supposed to be in and you might end up writing to the incorrect file or copying over some other files unintentionally.
In order to tackle this problem, programmers came up with local VCS, which boasted of an uncomplicated database, which maintained all modifications to files strictly under revision control.
Centralized Version Control
The main concept behind a centralized system of version control is that it operates in a precisely server and client relationship. The repository is usually, located in a single place and is effective in providing access to several clients. All modifications, commits, users and information should be received and sent exclusively from this repository. This setup is known to offer numerous benefits, particularly, over local VCSs. Everyone knows to some extent, what everyone else is doing, on the project. Administrators are now able to have a strict control over who would be doing what. Moreover, it is much easier and simpler to administer a Central Version Control system than dealing with local databases individually.
However, this setup is known to have a serious downside. The major disadvantage is that the centralized server is known to represent a single or one point of failure. If that server is down for some time, then during the breakdown period nobody is in a position to collaborate or save any versioned modifications to anything, they must be working on. Another problem that you could encounter is that in case, the hard disk that has the central database gets corrupted and necessary backups have not been taken, you end up losing everything.
Distributed Version Control
Distributed systems are relatively newer options. In this kind of version control, each user is said to possess his/her copy of the complete repository both the history, as well as, the files. It could be regarded as simply a network of separate or individual repositories. Git, for example, is a distributed version control system. Distributed version control is really more powerful and employs fully detailed modification tracking that means fewer conflicts. No server is necessary and all actions are local except sharing repositories. This system is most frequently used as branching and merging seem to be far more reliable. Needless to mention, it is very fast.
Choose a version control system that is most suited to your kind of work.
Author Bio: Charlie Brown is a software developer working in a tech startup based in LA. He also handles the PR side of affairs and runs the company blog where he writes articles on a number of topics including full stack development, Linux essentials, Salesforce Git and Salesforce GitHub integration.