Source Code Management
A source code management (
SCM) isa tool for managing a collection of a program code that provides you with 3 important capabilities.
It is synonymously also known as Version Control System (
VCS is the combination of technologies and practices for tracking and controlling process to a project files in particular to source code, documentation, and other related artifacts.
VCS helps with almost all aspects of a project, including:
- Version control
- Tracking changes to the source code
- Inter Developer Communication
- Release Management
- Bug Management
- Complete version history
- More effective collaboration
- Workflow automation
- Better communication
- Graphic displays of code history
- Generate release notes
- Code Backup
Types of VCS
- Centralized Version Control System
- Distributed Version Control System
Centralized Version Control System
- It is easy to understand and get started.
- You have more control over users and access ( since it is served from one place ).
- Dependent on access to the server.
- Hard to manage a server and backups.
- It can be slower because every command connects to the server.
- Branching and merging tools are difficult to use.
Distributed Version Control System
- Each user has their own copy of the entire repository, not just the files but the history as well as so it is fast.
- More powerful and detailed change tracking which means less conflict.
- No server necessary, all actions except sharing repository, are local (offline commit).
- Branching and merging is more reliable.
- The distributed model is harder to understand.
Difference between Centralized and Distributed VCS
|Factor||Centralized VCS||Distributed VCS|
|Definition||It is the form of version control in which the central repository of the server provides the latest code to the client machines.||It is the form of version control where the complete codebase (including its full history) is mirrored on every developer's computer.|
|Local Repository||There are no local repositories.||There are local repositories.|
|Speed||Works comparatively slower.||Works faster.|
|Internet Connection||Always require internet connectivity.||Developers can work with a local repository without an internet connection.|
|Main Focus||Focuses on synchronizing, tracking and backing up files.||Focuses on sharing changes.|
|Failure||A failure in the central server terminates all the versions. Eg: If the central server is down, all the developers will be unable to access the repository.||A failure in the main server does not affect the development. Eg: If the central server is down, all the developers will be able to access the repository.|
|Example||Eg: SVN (Subversion)||Eg: Git|
Concurrent Version System (CVS)
- Concurrent versions System is functional version control system which is developed by Dick Grune as series of shell scripts.
- This helps the teams to be connected to the changes that are measured into repository when working on software.
- This tool was used as the version control system for long for time.
- It is reliable software tool but with new challenges other alternatives made it used as limited.
Following are some features of CVS :
- It is one of the reliable Version Control System
- It does not allows commit with errors to made.
- Scripts are written in RCS.
- User can only store files into repository.
- CVS is one of the reliable version control software.
- Changes are committed with full change.
- CVS changes are time consuming.
- CVS do not commit if there is error into the commit.