This document provides an overview of Source Code Management with Subversion. It discusses Subversion's history and features, including its support for directories, files, atomic commits, branching and tagging. It also covers enterprise considerations, the Subversion architecture with servers and clients, development processes using branches and merges, and tools for reporting. The presentation concludes with resources for support, training and learning more about Subversion.
4. Subversion
• Subversion is a Source Code Management system
initiated in 2000 by CollabNet to create a new SCM
fixing flaws in CVS
• Subversion is gaining ground as the preferred
solution in use on over 56,000 publicly accessible
production servers and many more behind firewalls.
• Currently used by high profile projects such as
Google Code and the Apache Foundation Project.
Source: “Version Control with Subversion”, 2006 Ben Collins-Sussman, BrianW. Fitzpatrick, C. Michael Pilato
5. Enterprise Considerations
• Cost
• Maintainability
• Support
• Security
• Integration and Extensibility
• Reliability
• Process Flexibility and Governance
• and of course Auditing
6. Subversion in the Enterprise
• Free, Open Source, Apache/BSD-style License
• Wide variety of administrative tools
• Support from User Communities or Fee Based from
Collabnet
• Network and Auth Security Options
• Support for many languages and platforms
• Significant increases in scalability, reliability and
performance
• Hooks provide access to customize and enforce
business processes
• No actual deletes and variety of reporting options
ensure quality audits and accountability
7. Features
• Directory & File versioning,
• Atomic Commits
• Choice of Network Protocol
• Consistent data handling,
• Efficient Branching and Tagging
• Minimized network traffic
8. Source: “Version Control with Subversion”, 2006 Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato
Subversion Architecture
9. The Server
• Install via binaries or manual compile
• Network Access: Local, Dav (http, https), SVN,
SVN+SSH
• Security options: basic flat file through integration with
Active Directory
• Network: Passing Deltas, SSL compression
• Hooks: Fully scriptable
•pre-commit
•pre-revprop-change
•post-revprop-change
•start-commit
•pre-lock
•post-commit
•pre-unlock
•post-lock
•post-unlock
10. Popular Client Apps
• Command Line
• Windows: Tortoise
• Mac & *nix: SmartSVN, RapidSVN
• IDE integration
▫ Subclipse for Eclipse
▫ AnkhSVN for Vstudio.net
11. Other Tools
• ViewVC (aka ViewCVS) Enhanced Web view
• Scmbug: Integration with bugzilla
• SvnAnt: Ant tasks for subversion
• SVK: Decentralized version control built on SVN
12. Key concepts
• Development Streams
• Branching
• Checkout
• Committing the working set
• Updating and resolving conflicts
• Merges
14. The process
• Non locking model (copy, modify, merge)
▫ Checkout working copy from the repository
▫ Modify files locally
▫ Update local from branch
– Resolve any conflicts
▫ Commit changes into repository
15. Development Process
Enhancement A Branch
RepositoryLocalWorkingCopy
Checkout
Modify
Update
Resolve
Commit
Resolve
Commit
Checkout
Update
Modify
Developer 1
Developer 2