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.
- Reversibility
- Concurrency
- Annotations
It is synonymously also known as Version Control System (VCS
).
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
Benefits
- 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
Benefits
- It is easy to understand and get started.
- You have more control over users and access ( since it is served from one place ).
Drawbacks
- 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
GIT Workflow
Benefits
- 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.
Drawbacks
- 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. |
Figure | ![]() |
![]() |
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.
Advantages :
- CVS is one of the reliable version control software.
- Changes are committed with full change.
Disadvantages :
- CVS changes are time consuming.
- CVS do not commit if there is error into the commit.