Software Configuration

for an open source world

Distributed or Decentralized Version Control Systems

software configuration management open source


A version control system is an essential tool for the software developer. There are plenty of options to choose from; Subversion and CVS currently being the most popular. The difference between a version control system and a distributed version control system stems from the way the system is used. A version control system such as the above mentioned pair use is based on a central core repository. Whereas a distributed version control system allows individual users full access to the repository with the ability to perform tasks within their locality. Their completed tasks are then able to be shared with others.



A decentralized version control system does not limit the user to working without a central core. Many of the available options also offer the ability for a user to opt on working from a centralized mode within the use of their software. Generally, each staff member will work upon a local repository when using a decentralized version control system. There are versions that cater to companies wishing to permit anyone to generate their own individual branch; these stem from origin within the bazaar range of associated software.



In a distributed version control system, the repositories are able to be cloned. Anyone is given the ability to do this, and it can happen on numerous occasions. It is often found that there are several core repositories, making this style of source control software ideal if you want to have more than one central core. Access restriction lists are not utilized. As a substitute, there is a merging of code from the various data repositories. There is a feature allowing for a controller to make the decisions in regard to which branches are amalgamated.



The release manager has the complex role of combining many areas of expertise. These include the facilitation of staff interaction in regard to new software, the responsibility of implementing new software within the company, assisting with dealing with troubles arising with application of software, and coordination of incongruent source trees, assignments, teams and workings. Release management staff also need to deal with such matters as issues arising from use of software, defects in programs, responsibility for potential risks, the request for additional or alternative features of programs, and organizational politics.



If you are responsible for the release management matters within your company, you will need to stay up to date with matters concerning the preference or rejection of a decentralized version control system over the former centralized options. The complexity involved in this area of expertise can be overwhelming to the standard staff member, who is generally unaware of the specific matters involved. From the preparatory tasks of release policy, planning and design, through the intermediate matters of building and configuration, reviewing, accepting and communicating within the company team, to the final stages concerning implementation and verification, the procedure often requires a specific staff member within the role of release manager, rather than reliance on a company worker or boss for this process.



Technical terminology that arises due to the latest system selection of source control software includes the new expressions of 'push' and 'pull'. In case you are unfamiliar with these terms, the word 'push' refers to sending an alteration across to a different repository. This may require permissive action, although in some cases it can be automatic. The word 'pull' refers to the action of taking a change from a repository.



Source control software refers to programs dealing with SCM. Often techniques lying within this field are learned on the job or through network studies rather than direct from an employer or through a university course. Source control is alternatively labeled version control. It may also be referred to as SCM, source code management, or software configuration management.



A source control tool offers a system for managing the source code. Source code management deals with the historical records of your work, the storage of source code, development of the work, and is an access point for varying project developers to combine their skills within the complete venture.  Some further technological terms you may need to understand within their field include file merging, merge branches, and repositories.



File merging refers to combining two or more separate alternative modifications of a file. The reason for this necessity may stem from two staff members working on the same file at the same time or when a file has been modified in two different branches. Source control software helps work with this possibility.



When an original base file has been altered by separate identities, the process of merging comes into operation. Merging allows for the original to be modified by both/multiple new adaptations.  Often this can be achieved automatically through the source control software, without need for manual input. Otherwise, it may be necessary for manual merging. This can be done by action on the source code files, which are generally in plain text format and contain on average less than eighty characters per line. A visual merge tool may be available to make this task easier from within your software package.



When file merging related to branches, it generally refers to the technique of applying data changes from one file branch to another. Once again, a source control tool can make this task far easier than staff attempting to perform it manually. The developer merely uses the tool on hand within the software package to complete the task, which is often an automatic procedure. A good source control tool can perform most of the operations required automatically, allowing for the user to usually only need to implement a review prior to completing the saved changes within the repository.  A repository being the core database for storage of all source code, which includes the entire history of all relevant directories and files.



Amongst the advantages of a decentralized version control system are the lack of necessity for a network connection, the fact that private work can easily be completed, there is no reliance upon a single computer unit, and there is the option for more than one central core data repository.  Being able to work without a network connection can be of advantage to companies employing personnel in outlying districts, in that a constant connection is not vitally essential to ensure productivity in the workplace. When a connection is down, workers can still tend to their tasks, rather than having to wait for the network connection to return.



The lack of need for a network also leads to work being faster. Operations can be attended to without the connections that they would otherwise be reliant upon. The safety of not being reliant upon a single computer is obvious. Should there be a server disk crash on a solitary machine, there would be major problems arising. Work would be lost and its recovery might be impossible. Using a distributed version control system alleviates this possible problem.


There are a few disadvantages, though the advantages would appear to outweigh these. There may be more merging problems, it is possible that the need may occur for a centralized repository, and companies are used to alternative source code control software. Use of a distributed version control system often leads to the necessity of merging by hand to solve a conflict; which may occur frequently. Certain projects may be better handled using a centralized core repository, and not all source control software can handle this requirement.


Staff who are trained in the use of former products will need to learn new techniques which may be more difficult to comprehend than previous methods. There is often the need to understand the infrastructure behind the program when dealing with a distributed version control system. Operating the system may therefore take more getting used to, and further education of the staff can be time consuming if not costly. However, once trained, the option of a decentralized version control system may be of advantage to your company.


Whereas centralized version control systems originated in the 1970's, the decentralized version control systems came on the scene much later, in the late 1990's. Some of the earlier software configuration management tools have adapted as time passed, whereas others have stayed true to their origin. As an example, Subversion has made changes in its structure, allowing for operations to occur without a network operation being essential at all times. Whether there will be a merging of the two forms of version control system or whether they will stay predominantly separate entities is yet to be ascertained.


The centralized version control systems perform certain responsibilities well. If tasks such as 'backup', 'undo' and 'synchronization' are on your business agenda, then this may well be your chosen option. However, should you require much merging and branching within your work, you would be better off seeking a decentralized version control system option for your company.



Another factor which can lead to a preference for the distributed version control system is the growth of a project. Some assignments may develop into large expansions. These will possibly require the assistance of a distributed version control system, in that they then need to be broken down into separate segments. Certain staff members may need to deal with various pieces of the project, rather than the overall assignment. The decentralized version allows for this requirement, permitting your various workers to carry out their own specific tasks on small areas of the complete venture.


With the distributed version control system, merging the various segments of your overall project is far simpler than when working on a centralized version control system. Therefore, when dealing with a large project, growing project, or collection of small projects within a larger sphere, the distributed version control system is by far the best option. As an example, with the former centralized software versions a project that might have four or five separate features would require work on each individual feature to be carried out and then added to the central repository in turn. With the distributed VCS option, these separate features can be worked on by individual staff members and added when the tasks are completed. There is no longer the need to wait for one task to be finished prior to proceeding to the next, but there is the ability for simultaneous work to occur. This allows for the project to proceed at a faster and more efficient pace, with staff no longer needing to wait upon other workers to complete their own tasks before commencing theirs.


The focus of the software may be the key to your personal choice. If this is the case, then the distributed version control systems will be to your advantage if you seek a tool to share the changes on a project. You might prefer a centralized option should you be focused upon tracking, synchronizing, or backing up your project files. You may seek to have an option between central administration and the input of peers. In this case, the decentralized version control system would be the better choice for your company.


Software configuration management is the task of identifying, recording and controlling various changes within the software. Practices involved within the area of configuration management include revision control, the management of differing product versions, and the control of any changes being suggested. Within the area of software configuration management, there may lay many changes, developments and updates.


Configuration management may bear the acronym CM for ease of text - or SCM when including the addition of the word software. CM handles the tools dealing with the changes within a project. As an example, your project might have six individual staff members working on selected categories within the overall development. Software configuration management tools deal with the input and amalgamation of the various components within the overall project. The main purpose of software configuration management is to achieve smooth processes within the fields of configuration identification, control of configuration, status account and review, management building, defect tracking, process and environment management, and teamwork within a project or company.



Bookmark and Share