Subversion voor Projectleiders Rob Brands Aino Andriessen May 25, 2005 1 Source control systems MS Visual SourceSafe Subversion (svn) CVS SCCS PVCS ClearCase Bitkeeper Perforce Oracle version control RCS netwerk schijf ... May 25, 2005 2 CVS & Subversion CVS wordt traditioneel veel ingezet in de open source community en in Java omgevingen. The goal of the Subversion project is to build a version control system that is a compelling replacement for CVS in the open source community. Subversion wordt in grote communities, als Apache, ingezet. May 25, 2005 3 Approaches lock-modify-unlock vss copy-modify-merge svn, cvs May 25, 2005 4 Hele korte Vergelijking SVN MS VS Strategy copy-modify-merge lock-modify-unlock Access Internet, others lokaal netwerk Clients Many VS client OS MS, Linux, MacOS, java MS Command line x beperkt Atomic commits x - Pricing gratis niet gratis Move x ? Renaming x ? Directory versioning x ? May 25, 2005 5 Voordelen Internet access vergelijkbaar met cvs clients copy-modify-merge command line May 25, 2005 6 Aandachtpunten best practices myproject/branches/ myproject/tags/ myproject/trunk/ copy-modify-merge bijv. voor projectfiles werkwijze tov vss global revision number “revision 5 of foo.c”, -> “foo.c as it appears in revision 5.” migratie May 25, 2005 7 Clients Browser command line Windows Explorer (Tortoise) smartSVN IDE's Jira plugin ant / maven ... May 25, 2005 8 SVN en Jira Jira kan worden/wordt gekoppeld aan SVN Jira retrieves the svn logfiles Koppeling op basis van het Jira incident nr. Aparte tab bij een incident ! Neem dus het Jira incident nr op als commentaar bij een commit. May 25, 2005 9 Working copy To get a working copy, you must check out some subtree of the repository. No concept of project or module .svn administrative directories off-line actions Locking is an option May 25, 2005 10 Terminology SourceSafe use the word "checkout" as a command which specifically communicates the intent to edit a file. For CVS / SVN, the "checkout" command is used to retrieve files from the repository regardless of whether the user intends to edit the files or not. May 25, 2005 11 Terminology 2 Repository Check-out Update Commit (check-in) Branch Tag (label) Switch Merge Revision Import Lock working copy ... May 25, 2005 12 Revisions Each time the repository accepts a commit, this creates a new state of the filesystem tree, called a revision. Each revision is assigned a unique natural number. a revision is a “snapshot” of the repository at a particular moment in time global revision number • “revision 5 of foo.c”, -> “foo.c as it appears in revision 5.” It's important to note that working copies do not always correspond to any single revision in the repository; they may contain files from several different revisions. • commit does not pull so you must perform update shortcuts: HEAD, BASE, PREV, ... May 25, 2005 13 Merge Merging is het fundament van svn Op text-files Meestal geen conflicten Built-in conflict resolution Dus ook goede ondersteuning voor het mergen van een branch met de main 'line' Aangeven welke revisies er gemerged moeten worden May 25, 2005 14 Tagging, Branching en Merging Tag = label (in vss) Branch is een aparte kopie Onderliggend mechanisme van taggen en branchen is hetzelfde Smart copy May 25, 2005 15 SVN Architecture May 25, 2005 16 Demo Tortoise Log en revision graph Merging May 25, 2005 17 Resources Wikipedia http://en.wikipedia.org/wiki/Revision_control http://en.wikipedia.org/wiki/List_of_revision_control_software Tutorial http://software.ericsink.com/scm/source_control.html Comparison http://better-scm.berlios.de/comparison/comparison.html SVN Crashcourse http://www.developer.com/java/other/article.php/3499816 May 25, 2005 18 Resources CVS http://www.nongnu.org/cvs/ Subversion http://subversion.tigris.org/ http://svnbook.red-bean.com/ http://tortoisesvn.tigris.org/ Visual Sourcesafe http://msdn.microsoft.com/vstudio/previous/ssafe/ Clearcase http://www-306.ibm.com/software/awdtools/clearcase/ May 25, 2005 19