130 likes | 399 Views
Distributed revision control systems. Juan Carlos Flores 10/20/2011. Outline. Introduction Centralized Revision Control Systems Subversion Overview Distributed Revision Control Systems Network of Trust Git Overview Mercurial Overview Conclusions. Introduction.
E N D
Distributed revision control systems Juan Carlos Flores 10/20/2011
Outline • Introduction • Centralized Revision Control Systems • Subversion Overview • Distributed Revision Control Systems • Network of Trust • Git Overview • Mercurial Overview • Conclusions
Introduction Revision control systems (methodologies or tools) • Automates the storing, retrieval, logging, identification as well as merging of revisions.(Keep track of changes in source code files) • Contain: • Current state of code • Date for changes that were made • Text log to explain why changes were made……. • Fall into two categories: Centralized and Distributed
Centralized Revision Control Systems • Developers work against one central repository. • Single place to check in and check out (similar to library) • Most common type of VCS (not for much) • Systems that use this methodology: • Subversion • CVS • Perforce • Disadvantages • No offline commits • Single point of failure • Painful merging • Bad performance • Slow • Projects that have used this type of VCS • Python • Apache • SourceForge • Google Code
Subversion • Created in 2000 by CollabNet • Main goal: to operate much like CVS, but it would fix its bugs and add features missing in CVS. • All collaborators have to work against one central repository. • Advantages • Master version is kept centrally • Easy to learn • Native support for binary files • Cross Platform • Great third-party support
Distributed Revision Control Systems • Take a peer-to-peer approach rather than a client-server approach • Developers maintain their own local branches • Systems that use this methodology: • Git • Mercurial • Bazaar • Key Advantages • Offline Commits • Great for forks • Fast • Easy branching and merging • Better adaptability (scalable) • Network not involved in most situations • Projects that have used this type of VCS • Linux Kernel • Xen • Mozilla • VLC
Git • Initially created by LinusTorvals to replace BitKeeper • Popular for being used to manage the Linux kernel source tree • It prides itself for being extremely fast and an efficient system • Its core is written in C • Many commands are implemented as shell or Perl scripts • Advantages • Mature • Efficient handling of large projects • Easy to compile • Distributed development • Disadvantages • Poor cross platform support • Difficult to learn (for new users) • Software projects using it • Linux Kernel • Gnome • Ruby on Rails • Perl • Qt
Mercurial (hg) • Fast and simple cross-platform distributed revision control system. • Written in Python (95%) and C (5%) • Main design goals: decentralized, fully distributed development, high performance and scalability, robust handling of binary as well as txt files and advance branching and merging capabilities. • Mainly designed for large projects • Advantages • Cross platform • Command usage similar to common CVCS such as Subversion • Excellent documentation • Great scalability • Easy to customize • Software projects using it • Mozilla • OpenJDK • OpenOffice • Python • Xen
Conclusion • Revision control systems are great to manage software projects helping in the software engineering process • Distributed revision control systems are taking over CVCS because of their advantages. • Great DVCS have been created to help organizations to manage their software projects • Mercurial seems to be more suitable for new users of distributed revision control systems
References • Distributed revision control. http://en.wikipedia.org/wiki/Distributed_revision_control [Accessed Oct. 29] • Revision Control. http://en.wikipedia.org/wiki/Revision_control [Accessed Sep 25] • Intro to Distributed Version Control. (Illustrated)http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ [Accessed Oct 9] • Distributedversus centralized version control systems. http://rg03.wordpress.com/2007/06/10/distributed-versus-centralized-version-control-systems/ [Accessed Oct. 10] • Alwis, B., Sillito, J., “Why are software projects moving from centralized to decentralized version control systems”, git-scm, 2009 • Distributed Version Control Systems: A not-So-Quick Guide. http://www.infoq.com/articles/dvcs-guide [Accessed Oct. 10] • Swicegood, T., “Pragmatic version control” 2009-4-20, 2009 • Mercurial. http://en.wikipedia.org/wiki/Mercurial [Accessed Oct. 15] • 7 Version Control Systems Reviewed. http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/ [Accessed Oct. 16] • O’Sullivan, B., “Mercurial- The definitive guide” 2009 • Git. http://git-scm.com/ [Accessed Oct. Sep 29] • Apache Subversion. http://en.wikipedia.org/wiki/Apache_Subversion [Accessed Oct. 14] • Collins, B., Fitzpatrick, B., Pilato, C., “Version Control with Subversion”, 2008