1. Subversion
Technical Report
Joe Chavez
August 2, 2006
8/2/2006 v1.1 Joe Chavez
1
2. Overview
• Motivation • Installation
• History • Configuration
• Why subversion? • CVS Conversion
• Architecture • Subversion Client
• Deployment • IDE Support
2
8/2/2006 v1.1 Joe Chavez
2
3. Motivation
• Manage the change in information over
time…
Source code
Documentation
Binary files
• Not ground breaking
Match main features of CVS
Not duplicate the flaws
Facilitate user switch
3
8/2/2006 v1.1 Joe Chavez
3
4. History
• Started by CollabNet in 2000
• “Self-hosting” in August, 2001
• Debian Free Software Guidelines license
• CollabNet still pays the salaries of a
“few” full time employees
• Version 1.3.1 released on April 3rd
4
8/2/2006 v1.1 Joe Chavez
4
5. Why subversion?
• Most current CVS features
• Directories, renames, and file meta-
data are versioned
• True version history
• Atomic commits
• Choice of network layers
• Consistent data handling
5
8/2/2006 v1.1 Joe Chavez
5
6. Why subversion?
• Efficient branching and tagging
• Integration
• Standalone server option
• Versioning of symbolic links
• Parse ready output
• Localized messages
• Properties
• Secure Access - SSH/SSL
6
8/2/2006 v1.1 Joe Chavez
6
7. Architecture
• Client
Command Line (XP, *nix, OS X, etc.)
IDE (IntelliJ, Eclipse… to name a few)
Client Library
• Connectivity
Internet
DAV (Apache mod_dav + mod_dav_svn) - http/s://
SVN - svn://
Local
file://
7
8/2/2006 v1.1 Joe Chavez
7
8. Architecture
• Repository
Berkeley DB
FSFS (recommended)
• Built on the Apache Portable Runtime
• Architecture diagram on next slide - from
Subversion docs
8
8/2/2006 v1.1 Joe Chavez
8
10. Deployment
• OS
Solaris 10
• Hardware
TBD
10
8/2/2006 v1.1 Joe Chavez
10
11. Installation
• Distribution
Via http://subversion.tigris.org/ and mirror sites
• Source
Roll your own
Enable options that are not part of the typical
“binary” distribution
• Binary
Easy to install - don’t have to compile for all
client platforms
May lag behind latest source release
11
8/2/2006 v1.1 Joe Chavez
11
12. Installation: Source
• Download Source
• Configure (with SSL client)
./configure --with-ssl --with-swig
• Make
make swig-py
make install swig-py (as root on *nix)
12
8/2/2006 v1.1 Joe Chavez
12
13. Configuration
• Server Options
Standalone Server
Apache Module
• Standalone
svn and svn+ssh (ssh tunneling)
• Apache
HTTP and HTTPS (with SSL enabled client)
13
8/2/2006 v1.1 Joe Chavez
13
14. CVS Conversion
• Convert or Export?
• Conversion
cvs2svn - http://cvs2svn.tigris.org/
Several options
Trunk only - No tags or branches
Exclude - Selected tags and branches
Project basis - Can break svn date range commands
• Export
Use cvs export then svn import
cvs repos should be read only for reference
14
8/2/2006 v1.1 Joe Chavez
14
17. Subversion Client
• File commands
svn add, svn delete, svn copy, and svn move
svn status - client side only, no “update” side
effects
-u to show repository updates
svn diff - no net access
svn revert - revert to original file and undo
scheduled operations
svn update - interesting if conflicts are found
svn resolve - use to resolve a conflict
17
8/2/2006 v1.1 Joe Chavez
17
18. Subversion Client
• History Commands
svn log - detailed file history
-v for path changes
-q for no log body
-v -q for names of changed files
svn cat - display file or particular revision
svn list - show file list for a directory
-v for detailed info
18
8/2/2006 v1.1 Joe Chavez
18
19. IDE Support
• IntelliJ
Check out on command line first
Create new project
Set subversion as source control
• Eclipse - Subclipse
Plug-in Install URL
http://subclipse.tigris.org/update_1.0.x
Select “SVN Repository Browsing”
perspective
19
8/2/2006 v1.1 Joe Chavez
19
20. Summary
• Motivation • Installation
• History • Configuration
• Why subversion? • CVS Conversion
• Architecture • Subversion Client
• Deployment • IDE Support
20
8/2/2006 v1.1 Joe Chavez
20