Recalling the discussion of Goals of SCM will clearly paint a picture of what basic features an ideal SCM Tool should have in it.
• First and most basic functionality a Software Configuration Management tool should provide is support for a central file repository. All other functionalities are around managing and tracking of these repository items.
• Secondly it is important that the SCM tool provides the capabilities of the distributed team to work together from a central repository. Features like file locking mechanism, file comparison and atomic commits are to name a few.
• The SCM tool should also provide a simple mechanism for creating and maintaining private branches and for merging changes from the main code line to the private branch, and vice versa.
• The SCM tool should provide visibility into changes made for each task and support the ability to work by task instead of by individual file, to merge changes from one configuration to another, and to revert changes for a task if needed.
• The SCM tool should also provide an easy mechanism for rolling back to the last good integration version.
• The SCM tool supports simple creation of a hierarchy, give visibility into the changes at each stage, and enable straightforward merging between stages.
• Tagging is another feature very common and useful which involves giving meaningful names to specific revisions. These names are generally called Tags or Labels.
• The SCM tool should support re-targeting features without the need to write and maintain scripts to perform the operations.
• In order to re-factor code and still be able to trace through the history of changes, an SCM tool must support file and directory rename and move operations and track the operations as part of the element’s history.
• The SCM tool should easily integrate with the continuous integration server so that latest code from the SCM repository can be extracted and compiled continuously and whole process can be automated.
With SCM field maturing every day, more and more advanced features are introduced into these SCM Tools thus facilitating the job of a Software Configuration Manager and providing more control over the code base. By comparing these basic and advanced features you can choose best suited SCM tool for your business needs.
What other basic features you believe are integral part of every SCM Tool out there?