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?