Juan Carlos Flores 10/20/2011

californiamandrillΛογισμικό & κατασκευή λογ/κού

13 Δεκ 2013 (πριν από 3 χρόνια και 7 μήνες)

102 εμφανίσεις

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






CVCS Diagram

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

DVCS Diagram

Network of Trust

Git


Initially created by
Linus

Torvals

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