Course Code:
bspsbvad
Duration:
14 hours
Prerequisites:
- Users knowledge of working with Subversion (the equivalent of the Subversion for Users course)
- General system administration experience in the operating system(s)
- Apache server basic knowledge
Course Outline:
SVN server setup
- install the package and all dependences
- to create one repository or several repositories with sensible location considerations, initial import, migrate from CVS and other version control systems
Fine-tune all kinds of access schemes, including http, https, svn, svn+ssh, file, specially to consider following
- how to configure Apache modules
- to use ssh environment variables to shorten svn+ssh:// urls
- to define proper user databases and design complex access control list or authorization patterns
- to integrate with LDAP / domain controller / MySQL / PAM / etc for user authentications
Configure sensible repository layout
- each sub-project has complete tree structure such as trunk, branches and tags, suitable for sub-projects are inclusive and self-contained, not much inter-dependence, APIs of each sub-projects are stable and mature
- all modules exist on trunk / branches and tags, suitable for a logically compact project, there exists strong coupling among modules
- difference and benefits
Backup strategy and disaster recovery
- backup strategy, including: native method with svn sync, third-party tools such as rsync, hot copy
- whole repository backup vs each revision checkout or dump
- disaster recovery
- permanently remove files and history
Basic knowledge about managing repositories
- normal working cycle with subversion (hand-on practices)
- create branches and tags
- create locks and other controls
- design client-side tools and integrate them with IDEs
- choose and configure repository viewing facilities
- set general user policies, including set subversion hooks for those hard restrictions
- design automatic check-out and build or compilation, and even automatic testing
Subversion design philosophy and its advantage
- Typical copy-modify-merge scenario, how to solve simple conflicts
- Set user policies and guild-line, make team collaboration smooth and consistent
- Compensation to copy-modify-merge method (i.e., lock and unlock)
Branching and merging
- When to create branches, several usages of branches,
- How to resolve conflicts and do merging wisely, how to absorb changes in different directions
- How to make use of new features of subversion to do branching and merging
- How to encourage or discourage users' local branching
Everyday digest and revision review
- Mailing list, RSS, digest
- Blaming, delegation
Subversion properties
- Built-in properties, properties with SVN: prefixed keywords, global properties
- How to design and use these properties
- Customized SVN properties for company
- Creative usage of customised SVN properties
- Disadvantage of SVN properties (i.e., mind the constraints and not to over-engineer it)
Subversion hooks
- Hook types
- General usage of already shipped hooks
- Self-defined hooks
- Be creative and imaginative
Secondary SVN server
- For backup, fail-safe recovery
- For automatic background tasks
- For temporary arrangement (i.e., different locations, etc.)
Integration with other tools
- Issue tracking systems (i.e., bugzilla, track, Jira, etc.)
- Content managing system (i.e., wiki, etc.)