VTRICKS TECHNOLOGIES
(SCM) Software configuration management is a process of tracking and controlling changes in the
software
The goals of SCM are generally:
Teamwork
Defect tracking
Configuration auditing
Process management
Version Control System (VCS) is a software that helps to implement SCM in software development
lifecycle.
Version control, also known as source control, is the practice of tracking and managing changes to files over
time. It is essential for managing code in multi-developer projects, but it is also a critical tool for individual
developers and for tracking changes in other types of digital assets, such as design files or documents. A
version control system (VCS) is the software used to automate this process
Need Version Control
Track history and revert changes
Enable collaboration without overwriting work
Backup and restore functionality
Helps in release management (v1.0, v2.0, etc.)
VTRICKS TECHNOLOGIES
VCS can be classified into two types:
Centralized version control system (CVCS)
Centralized version control system (CVCS) uses a central server to store all files and enables
team collaboration.
But the major drawback of CVCS is its single point of failure, i.e., failure of the central server.
Unfortunately, if the central server goes down for an hour, then during that hour, no one can
collaborate at all. And even in a worst case, if the disk of the central server gets corrupted and
proper backup has not been taken, then you will lose the entire history of the project.
Distributed/Decentralized version control system (DVCS)
There is no server in DVCS and everything is a workspace. Every workspace will have a
complete copy of the actual repository. If the central server/repository goes down, then the
repository from any client can be copied back to the server to restore it.
Git does not rely on the central server and that is why you can perform many operations
when you are offline. You can commit changes, create branches, view logs, and perform other
operations when you are offline. You require network connection only to publish your
changes and take the latest changes.
VTRICKS TECHNOLOGIES
SCM Terminologies
Server: Server is a machine which holds the collection of all the changes for every product. Server
contains many repositories in it.
Repository: Folder or location under server where all the changes specific to project is stored.
Client: Client is a software which connects to the server assisting users to perform necessary actions
Workspace: Is a folder in your local machine where we you see the files respective to a repository in
the server, modify them
Checkout: An action which helps us to fetch the files from the repository and displays in the
workspace, which are later modified
Checkin: An action where the changes made in the workspace are stored back in the repository
Versions: References created in the repository for every checkin, which holds the transaction details
of who modified, what was modified and when was it modifie
Popular VCS Tools : Git (most popular), SVN (still used in enterprise), Mercurial, Perforce
VTRICKS TECHNOLOGIES
GIT
Git is a distributed revision control and source code management system with an emphasis on
speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development.
Why Git is So Popular
Speed & Efficiency: Git performs operations (like commit, branch, merge) locally — making it
very fast compared to older systems like SVN.
Distributed System: Every developer has a full copy of the repository, so work can continue even
without internet access.
Branching Made Easy: Git allows quick creation, merging, and deletion of branches — making
collaboration and feature development smooth.
Who Started Git
Created by: Linus Torvalds (the creator of Linux), Year: 2005
Reason: He needed a faster, distributed, and open-source version control system for developing
the Linux kernel.
Benefits of Using Git
Track Changes: You can view who changed what and when, and easily revert if needed.
Collaboration: Multiple people can work on the same project without overwriting each other’s
code.
Backup & Security: Every clone acts as a full backup of the project.
Open Source & Widely Supported: Works with GitHub, GitLab, Bitbucket, and integrates with
most CI/CD tools.
VTRICKS TECHNOLOGIES
Git Installation
Goto [Link] and choose appropriate platform to install Git.
Installing Git on Windows
Download exe from the above mentioned page and install it on windows. Installing
Git on Linux
For Ubuntu/Debian OS, run the following as ‘root’
$ apt install git
For Centos/Fedora OS
$ yum install git
VTRICKS TECHNOLOGIES
Get ready to use Git on your local machine
Set the user configuration i.e name and email for Git to use when you commit.
Open gitbash command prompt and run the following cmds:
$ git config --global [Link] “”
$ git config --global [Link]
$ git config --global [Link] simple
$ git config [Link] store
These will be set globally for all Git projects you work with in your machine
You can also set variables on a project-only basis by not using the --global flag
You can call ‘git config –-list’ to verify these are set.
VTRICKS TECHNOLOGIES
Git - local workspace has three areas:
Working directory is the folder where we see the files and modify them.
The changes are then pushed to Staging area where snapshots would be taken.
We then perform commit operation that moves the contents from the staging area and stores it into
the repository by creating a commitID
All new files are considered untracked, any files under the repository are called tracked files.
However files status would be unmodified if it’s a clone workspace and changes are done. Status
would be modified if files are modified compared to repository content. Once the changes are
moved to staging area the file status will be staged. When these changes are checkedin the file
status would be unmodifie
VTRICKS TECHNOLOGIES
Setting up Remote/Central repository using Github
Signup for a Github account, if you don’t already have one at [Link]
Click on the “New repository” button on the left side of the page
Provide the necessary Repository name and description of the project
VTRICKS TECHNOLOGIES
Choose the project type and create repository
VTRICKS TECHNOLOGIES
Setting up Remote/Central repository locally
Bare repository contains the version control information and no working files. By convention the
name of a bare repository should end with the .git extension
Create a new dir & run the following from it:
$ mkdir [Link]
$ cd [Link]
$ git init
VTRICKS TECHNOLOGIES
Git – lifecycle:
General workflow is as follows:
You clone the Git repository as a working copy.
You modify the working copy by adding/editing files.
If necessary, you also update the working copy by taking other developers' changes.
You review the changes before commit.
You commit changes. If everything is fine, then you push the changes to the repository.
After committing, if you realize something is wrong, then you correct the last commit and
push the changes to the repositor
VTRICKS TECHNOLOGIES
Git User Workflow
Create local workspace
$ git clone <CentralRepoLocation> <LocalWorkspace>
Once the workspace is created, cd to the dir & make changes
Show the list of all new files or modified files
$ git status
VTRICKS TECHNOLOGIES
Add changes to the staging area
$ git add <filename> or
$ git add .
Checkin the changes permanently to repository
$ git commit –m “<comment on why the checkin is needed>”
VTRICKS TECHNOLOGIES
Show the list of all the commit id’s from latest to oldest order
$ git log # lists all the commits in full format
$ git log --oneline # lists all the commits in short format
$ git log –oneline -<num> # lists only the specified number of commit ids
Git help
$ git help
VTRICKS TECHNOLOGIES
For git Documentation:
Click on [Link]
Git Configuration Levels
We need these three configuration levels (System, Global, Local) in Git because they let you manage settings at
different scopes — depending on who or what the configuration should affect.
Level Command File Location
System git config --system /etc/gitconfig
Global git config --global ~/.gitconfig
Local git config --local .git/config
System Level (git config --system)
Affects: All users and all repositories on the computer.
Stored in: /etc/gitconfig
Used for: Organization-wide or machine-wide defaults (e.g., proxy settings, default editor for all users).
Global Level (git config --global)
Affects: Only your user account (all repositories you work on).
Stored in: ~/.gitconfig (inside your home directory).
Used for: Personal identity and preferences — like your name and email.
Local Level (git config --local)
Affects: Only the specific repository where it’s set.
Stored in: .git/config (inside that project folder).
Used for: Repository-specific settings — like different remotes or credentials.
VTRICKS TECHNOLOGIES
VTRICKS TECHNOLOGIES
Why We Need All Three Levels
Flexibility: Different projects may need different settings.
Priority Control: Local > Global > System (Git always uses the most specific configuration).
Team Collaboration: Teams can define common rules system-wide, while developers can still have
personal preferences globally.