During the course of creating the software, series of reviews and meetings happen and these entities change very often. Since all these entities are quite complex and very dynamic, it’s very important to manage and have control on these changes. So here is the place or situation, where configuration management comes into scene.
Source Code Management (SCM) is a technique or discipline to systematically manage, organize and control the changes in the documents, codes, artifacts and other entities during the development life cycle. Actually, SCM is one of the key entities of the development process and becomes very important when a team works on single application.
However, choose an SCM tool is not a trivial exercise. It requires thought and planning, and sufficient time to investigate. Just to keep in mind, some things you must consider when choosing are the requirements, the performance (what is fast enough for your application?), platforms (because sometimes it is better to be able to use the same tool on all the platforms you are working with), integration, support, usability and costs.
There's a brief description of the main SCM tools. Enjoy it!
Git is a widely used source code management system for software development. It is a distributed revision control system with an emphasis on speed, data integrity,and support for distributed, non-linear workflows |
|
Mercurial is a cross-platform, distributed revision control tool for software developers. It is mainly implemented using the Python programming language, but includes a binary diff implementation written in C. It is supported on MS Windows and Unix-like systems, such as FreeBSD, Mac OS X and Linux. |
|
Bitbucket is a web-based hosting service for projects that use either the Mercurial (since launch) or Git (since October 2011) revision control systems. Bitbucket offers both commercial plans and free accounts. |
|
GitHub is a web-based Git repository hosting service. It offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features. |
|
Helix, a source code management (SCM) and content collaboration platform that brings distributed workflows, Git management, advanced threat detection and new deployment options to enterprises building Internet of Things devices and digital media. |
|
Apache Subversion (often abbreviated SVN, after the command name svn) is a software versioning and revision control system distributed as free software under the Apache License. |
|
Team Foundation Server (commonly abbreviated to TFS) is a Microsoft product that provides source code management, reporting, requirements management, project management (for both agile software development and waterfall teams), automated builds, lab management, testing and release management capabilities. |
|
Trac is an open source, Web-based project management and bug tracking system. The program is inspired by CVSTrac. It is developed and maintained by Edgewall Software. Trac uses a minimalistic approach to web-based software project management. |
|
Gerrit is a free, web-based team code collaboration tool. Software developers in a team can review each other's modifications on their source code using a Web browser and approve or reject those changes. It integrates closely with Git, a distributed version control system. |
|
Kallithea is a free software source code management system that supports two leading version control systems, Mercurial and Git, and has a web interface that is easy to use for users and admins. You can install Kallithea on your own server and host repositories for the version control system of your choice. |
A main feature of a good SCM tool is the ease to work simultaneously ensuring that the developers don’t overwrite watch others code and maintenance the history of everything. Anyway, is important to know that there doesn't exist a magical tool. That´s why choosing an SCM tool takes time and effort. Finally, the results will depend on that.