220 likes | 451 Views
Configuration Management Version Control Systems. By Ryan Keown. Overview. History of Version Control Local Systems Centralized Systems Decentralized Systems Why use a Version Control System (VCS) Risks of not using Version Control Branching, Merging, and Conflicts Binary Files
E N D
Configuration ManagementVersion Control Systems By Ryan Keown
Overview • History of Version Control • Local Systems • Centralized Systems • Decentralized Systems • Why use a Version Control System (VCS) • Risks of not using Version Control • Branching, Merging, and Conflicts • Binary Files • GIMP modified for Version Control
History of Version Control • Manually renaming files • Local • Centralized • Decentralized
Local Version Control Systems • SCCS, RCS, ClearCase • File Based • Locking • Single Location not networked
Centralized Systems • CVS, Subversion, Perforce • Central Repository • File Oriented • Merge before commit • Networked collaboration
Decentralized Systems • Monotone, Bitlocker, Darcs, Git, Mercurial, Bazaar • Distributed Repositories • Commit before Merge • Change sets
Why Version Control? • Backup and restore • Synchronization • History Tracking • Undo • Sandbox • Branching • Defect location
Risks of Not using version control • Project Failure • Missed deadlines • Out of sync developers • Unknown untested code
Branches • Necessary Evil • Why Branch? • Development • Release Maintenance • Feature • Experimental
Conflict Example <<<<<<< HEAD:index.html <div id="footer">contact : email.support@github.com</div> ======= <div id="footer"> please contact us at support@github.com </div> >>>>>>> iss53:index.html
Binary Files • Microsoft Office files, 3D Meshes, Embedded Databases, and Pictures • Archives of files and usually compressed • Diff is impossible due to a change in the beginning ripples through the entire file
Image File Solution • Modified version of GIMP • Directed Acyclic Graph (DAG) • Text based history of image editing • Each node editing operation • Each edge represents the relationship between operations • Graph difference algorithm used for automatic merge
References Alwis, Brian de, and Jonathan Sillito. "Why are Software Projects Moving From Centralized to Decentralized Version Control Systems?." CHASE '09 Proceedings of the 2009 ICSE Workshop on Cooperative and Human Aspects on Software Engineering. (2009): 36-39. Print. <http://dl.acm.org/ft_gateway.cfm?id=1572211&type=pdf&CFID=172052581&CFTOKEN=28577438>. Chen, Hsiang-Ting, Li-Yi Wei, and Chun-Fa Chang. "Nonlinear Revision Control for Images." ACM Transactions on Graphics (TOG). 30.4 (2011): n. page. Print. <http://dl.acm.org/ft_gateway.cfm?id=1965000&ftid=1006199&dwn=1&CFID=172052581&CFTOKEN=28577438>. O'Sullivan, Bryan. "Making Sense of Revision-control Systems." Communications of the AC. 52.9 (2009): 56-62. Print. <http://dl.acm.org/ft_gateway.cfm?id=1562183&ftid=674024&dwn=1&CFID=172052581&CFTOKEN=28577438>. Premraj, Rahul, Antony Tang, et al. "To Branch or Not to Branch?." ICSSP '11 Proceedings of the 2011 International Conference on Software and Systems Process. (2011): 81-90. Print. <http://dl.acm.org/ft_gateway.cfm?id=1987890&ftid=969892&dwn=1&CFID=172052581&CFTOKEN=28577438>. "Git Documentation." . N.p.. Web. 1 Nov 2012. <http://git-scm.com/doc>. O'Sullivan, Bryan. Mercurial: The Definitive Guide. Sebastopol, CA: O'Reilly Media Inc, 2009. Print. <http://hgbook.red-bean.com/read/>.