• Subversion maintains snapshots of the code
• Allows many people to concurrently work
on a codebase.
• Subversion is source control with a central
• Usually integrates with a frontend: Trac
• Continuous incremental backup.
• Ability to recall older code.
• Distributed development.
• Various versions of a single project.
• Tracking bugs, timeline, goals and releases.
5. Central Repository
• Developers checkout code from the
repository to a local working-copy.
• After making edits, they commit changes.
• At any point, they can revert to an older
version of the codebase.
• They update their local working copy
frequently to keep up with changes.
7. Work with Subversion
8. But how does
• A system to track changes in ﬁles.
• The code is initially imported into the
• Then a special “subversion-aware”
directory is checked-out.
• Developers commit and update.
• Subversion tracks the changesets and the
9. Common Subversion
• checkout: Obtain a new working copy.
• import: Import code into repository initially.
• commit: Update repository with changes.
• update: Update working-copy with changes.
• Other commands: revert, move, copy, merge.
10. Subversion: Demo
11. GUI Tools
• TortoiseSVN in
• Right-click a directory:
get a context-menu with
everything in there.
• Useful Integration with
diff and patch.
• Reasonably fast.
12. Project Layout
• All constant development happens here.
• Special purpose development here.
• Releases are “tagged” for archiving.
13. Trac: Demo
14. Major features of Trac
• Frontend to a Subversion repository.
• Shows the changesets and timeline.
• Has a bug tracker which integrates with the
• Simple project management.
15. Some good Subversion
• Follow the branches, tags, trunk structure.
• All code should be in the repository!
• Update code at the start of every day.
• Only commit coherent changes.
• The central repository should always be
• Branch as less as possible.