You are on page 1of 37

DISTRIBUTED VERSION CONTROL SYSTEM

AGENDA Version Control Distributed Version Control GIT

VERSION CONTROL SYSTEM

What does version control?


It's called version control to manage the various changes made on the elements of a product or configuration. The most commonly used version control systems are client-server based, meaning they rely on a centralized machine to store and manage all of the content.

WHAT IS IT?
Definition:
The management of multiple versions of the same unit of information Most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models and other critical information that may be worked on by a team of people.

NEED FOR VERSION CONTROL SYSTEM In most software development projects, multiple developers work on the program at the same time. If two developers try to change the same file at the same time, without some method of managing access the developers may easily end up overwriting each other's work.

USAGE OF VERSION CONTROL


Changes to these documents are identified by incrementing an associated number or letter code, termed the "revision number", "revision level", or simply "revision" and associated historically with the person making the change.

Most version control systems, such as CVS, allow multiple developers to be editing the same file at the same time.

CONTD.
The first developer to "check in" changes to the central repository always succeeds. The system provides facilities to merge changes into The central repository, so the improvements from the first developer are preserved when the other programmers check in.

HOW IT IS USED?
3 Storage Models
File Locking

The simplest method is to lock files so that only one developer at a time has write access to the central "repository" copies of those files. Once one developer "checks out" a file, others can read that file, but no one else is allowed to change that file until that developer "checks in" the updated version (or cancels the checkout).

it can provide some protection against difficult merge conflicts when a user is making radical changes to many sections of a large file

locked for too long, other developers can be tempted to simply bypass the revision control software and change the files locally anyway. That can lead to more serious problems.

Version Merging

Most version control systems, allow multiple developers to be editing the same file at the same time. The first developer to "check in" changes to the central repository always succeeds. The system provides facilities to merge changes into the central repository, so the improvements from the first developer are preserved when the other programmers check in.

unlike file locking everyone is able to check the same file out

every time a developer check file in, it will not always checks in successfully due to the change made in earlier check in by other developer.

WHAT IS CVCS?
The Concurrent Versions System (CVS), also known as the Concurrent Versioning System. Open-source version control system invented and developed by Dick Grune in the 1980s.

CONTD.
CVS keeps track of all work and all changes in a set of files, typically the implementation of a software project, and allows several (potentially widely-separated) developers to collaborate. CVS has become popular in the open source software world And is released under the GNU General Public License.

CVCSS HISTORY
Developed

from an earlier versioning system called Revision Control System (RCS) which manages individual files but not whole projects. Dick Grune created CVS to be able to cooperate with his students in 1984~1985.

CONTD. The code was publicly released on June 23, 1986 Evolved into the current version of CVS started in 1989 CVSNT : The development of the Microsoft Windows version of CVS

CVCS
Centralized systems allow you to list the files and branches and whatnot. Subversion made an important improvement on CVS by making the branching and tagging very transparent, where it was somewhat invisible and mysterious in CVS. That makes a real and practical difference in the usability of branching

Client-Server Architecture
LAN or Internet

Server

Stores the current version(s) of the project and its history

Clients

Connect to the server to check out a complete copy of the project work on this copy and later check in their changes

ACCEPTING MOST RECENT CHANGES Several developers may work on the same project concurrently -> Each one editing files within their own working copy of the project ->

CONTD.
and sending (or checking in) their

modifications to the server To avoid the possibility of people stepping on each other's toes The server will only accept changes made to the most recent version of a file

DISTRIBUTED VERSION CONTROL SYSTEM

DVCS
The DVCS are version control tools that take an approach to peer-to-peer as opposed to taking a centralized VCS clientserver approach.

Main differences between CVCS and DVCS There is a reference copy of the code, only working copies. The most common operations are regularly faster because it does not have to communicate with a central server. Each working copy on a backup type of the code base.

Main differences between CVCS and DVCS Developers can work without the need to connect to a server, even internet.

Peer to Peer
Distributed revision control (DRCS) takes a peer-to-peer approach to version control, as opposed to the client-server approach of centralized systems. Rather than a single, central repository on which clients synchronize, each peer's working copy of the codebase is a bona fide repository. Distributed revision control conducts synchronization by exchanging patches (sets of changes) from peer to peer.

WORKFLOW
Single Partner Centralized Centralized with local commits Decentralized with shared mainline Decentralized with human review Decentralized with automatic review

SINGLE

PARTNER

CENTRALIZED

CENTRALIZED WITH LOCAL COMMIT

DECENTRALIZED WITH SHARE MAINLINE

DECENTALIZED WITH HUMAN REVIEW

DECENTRALIZED WITH AUTOMATIC REVIEW

GIT

WHAT IS GIT?
Git is a "distributed version control system" (DVCS), and is thus similar to programs like Bazaar (bzr), Mercurial (hg), and Darcs, while being substantively different from conventional version control systems like RCS, CVS, and Subversion (svn).

CONTD.
Git allows every user to have a complete and independent working copy of a repository with a full change history of the entire repository, which allows users and groups of users to collaborate with minimal infrastructure including offlineworkflows and in the manner which is most conducive to their productivity

TERMINOLOGY
Repository a storage of the history of changes of the tracked files, hidden from the user Working Copy the set of tracked files Revision a specific state of data recorded in the history

CONTD.
Branch a separate line of history of the tracked files deviating from the origin or another branch Tag a reference to a specific state of a branch

References
http://sourceforge.net/ http://www.collab.net/ http://www.eclipse.org/equinox/ https://jxtaspec.dev.java.net/JXTAProtocols.pdf https://git.wiki.kernel.org/index.php?ti tle=GitBenchmarks%5C&oldid=8548

You might also like