In part 1 of this series we had seen basic idea about configuration & version management systems. Today we will see some advanced discussion about these systems.
Any software system needs to be used by its users. At the same time, it needs to be managed as well. Managing any software system requires user creations and user management, system management, creation of file and menu structure in the system, managing security of the system etc.
Most configuration & version management systems (CVS) have at least 3 types of roles. these roles are then assigned to specific user accounts. One user role is that of the user of the system. Users can create, update or view their own files but can not update or delete files of other users. Then there are roles corresponding to managers. These user roles have rights to create, update or view any files. They also can delete files. The top level role is that of system administrator. The system administrator role has the ability to do just anything with the system. They can create new users, modify existing users, delete existing users. They can also create new branches in the system.
CVS systems are essentially file management systems. If project team is not co-located or some team members work from home then it is essential that the CVS system should support functionality so that all kind of users which are created in the system can use it irrespective of their location. For such functionality, the CVS system must be accessible over the internet. The CVS system should also have a central repository so that all project team members can do their work on their own machines but check in their work whenever required on the central CVS system.
Sometimes a distributed repository system is deployed for reasons like to support different languages, support totally free sub projects etc. In such cases, it becomes imperative to synchronize the 2 systems from time to time. generally distributed repository creates lots of problems due to problems in synchronization and so it should be deployed.
Most of the software development these days is done using agile methods. One requirement of agile methods is that the product should be built incrementally. To achieve this goal, continuous build of the software source code is required. The CVS system should provide this functionality so that software developers can check in their source code whenever they finish their piece of source code.