Version Control Overview

advertisement
Version Control
Overview
Summer of Code (SOC)
Presentation
Fred R McClurg
Girish H Mhatre
History of Version Control
Original paper: Marc Rochkind (1975)
Need for Version Control (Problem)
From Version Control with Subversion: http://svnbook.red-bean.com
Advantages
•
•
•
•
•
•
•
•
Back Up and Restore
Synchronization
Short Term Undo
Long Term Undo
Track Changes
Track Ownership
Sandboxing
Branching and Merging
Types of Version Control
• First Generation –e.g. RCS , SCCS
• Second Generation : Centralized
e.g. CVS, Subversion, Team Foundation
Server, SourceSafe, ClearCase
• Third Generation : Distributed
e.g. Git, Bazaar, Mercurial
Versioning Models
 Lock-Modify-Unlock Model
 Copy-Modify-Merge Model
Lock-Modify-Unlock Model Illustrated
From Version Control with Subversion: http://svnbook.red-bean.com
Lock-Modify-Unlock Discussion
Attributes:
 First person to check-out a file locks the file from being modified by everyone else.
 Checking out a file is similar to checking out a book. Only one patron at a time.
Advantages:


Ideal for binary files (e.g. images, Microsoft Word, PowerPoint, etc.)
Less complexity for the user
Disadvantages:






A file checked-out by someone on vacation is an obstacle.
Locked files can only be unlocked by lock owner or by an admin.
A change to the client’s operating system may be necessary to support locking.
User may be prevented from accessing any local files if server is down.
Does not work well outside of an internal network.
Tends to promote file hoarding.
Copy-Modify-Merge Model Illustrated
From Version Control with Subversion: http://svnbook.red-bean.com
Copy-Modify-Merge Model Illustrated (cont.)
From Version Control with Subversion: http://svnbook.red-bean.com
Copy-Modify-Merge Discussion
Attributes:
 Multiple individuals can check-out and modify the same file at the same
time.
 The last person to check-in the file has to perform a merge.
 If the changes between the two files were made on different lines, the
merge is performed automatically.
 If the changes were made on the same line, the conflict must be resolved by
a human.
Advantages:
 Improves turn-around (advantage to checking in first and frequently).
 No waiting queue for the people accessing the same file.
 Tends to promote file sharing.
Disadvantages:
 Automatic merges could result in undesired results.
Centralized Version Control
•
•
•
Works in Server and Client Relationship
Repository located in one place and provides access to many
clients
All Changes, commits and information must be sent and received
from central repository
Advantages:
 Easy to understand and simple to get started.
 More control over uses and access.
 More GI and IDE clients are available.
Disadvantages:
 Dependent on access to the server and can be slower.
 Branching and merging tools are difficult to use.
Distributed Version Control
•
•
Each user has its own copy for the repository.
Works as network of individual repository
Advantages:
 More powerful. Less conflicts
 No server necessary. All actions except sharing are local
 Branching and merging are more reliable.
Disadvantages:
 Harder to understand.
 Revision numbers are not incremental so might be confusing
Subversion Eclipse Plugins
Description:
Eclipse plugins give you the capability to perform Subversion operations
via the GUI and is integrated into the interface.
 Subclipse (uses native SVN client via JavaHL):
 Update Site:
http://subclipse.tigris.org/update_1.6.x
 Eclipse Marketplace
 Subversive (uses JavaHL or Java SVN Kit, built-in SVN
implementation):
 Update Site:
Standard Update Site E.g.:
http://download.eclipse.org/releases/juno|indigo|helios|kepler
 Eclipse Marketplace
Subversion Eclipse
Plugin: Subversive
Available via right click
on every file
EGit Eclipse Plugins
Description:
Eclipse plugins give you the capability to perform Git operations via the
GUI and is integrated into the interface.
 EGit (UI that depends upon JGit):
 Update Site:
Standard Update Site E.g.:
http://download.eclipse.org/releases/juno|indigo|helios|kepler
 Eclipse Marketplace
 JGit (Java implementation of Git):
 Update Site:
Standard Update Site E.g.:
http://download.eclipse.org/releases/juno|indigo|helios|kepler
 Eclipse Marketplace
Version Control @ IntMed
• Apache Subversion
• TortoiseSVN client as
Windows shell client
Questions?
Download