Software Configuration Management is the process of tracking and controlling the software changes. The basic features provided by any SCM tools are as follows:
- Concurrency Management
- Version Control
- Synchronization
Let us go through all these features one by one.
Concurrency Management
When two or more tasks are happening at same time it is known as concurrent operation. If we talk concurrency in context to SCM it means that the same file being edited by multiple persons at the same time. If concurrency is not managed properly with SCM tools then it may lead to very severe problems.
Let us take an example to explain this:
Suppose you have a central repository to store development resources and multiple developers are working on same features, so there might be a possibility that 2 or more developers are modifying the same file at same time.
The scenario in this condition will be something like this.
- User 1 opens a file test.java from common repository
- User 2 also opens a file test.java from common repository
- User 1 does some changes and saves the file in common repository
- User 2 does some changes and saves the file in common repository which overwrites the previous changes by user1.
So to avoid this situation concurrency management is needed in which the multiple users are allowed to checkout the files and make changes. After doing changes when user again checks in the file the SCM system runs the algorithm to merge changes of multiple users.
Version Control
The second important feature provided by SCM tools is version control. SCM tool uses archiving method or saves every change made to file so that it is possible for use to roll back to previous version in case of any problems.
Synchronization
This is another feature provided by SCM tools where the user is allowed to checkout more than one files or entire copy of repository. The user then works on the required files and checks in the changes back to repository, also they can update there local copy of periodically to stay updated with the changes made by other team members. This is known as synchronization.
Besides these features SCM tools provide lot more functionality like build management, auditing, reporting system, defect tracking etc.
References:
Google Code University
For more detailed explanation please visit the following link:
http://code.google.com/edu/tools101/scm.html