Subversion for Advanced Users
Who should attend?
This 2 day course is aimed at advanced users of subversion, such as release
managers, project leaders, or anyone who wants their svn repository to be in a
streamlined production chain, who are involved heavily with branching
management, automatic build/compilation and testing, even deployment and
updating. The students would benefit from this course working more closely with
their development team and deployment team, especially for large size companies
or those with geographically distributed branches. This course features a lot
of exercises on CentOS virtual machines. A working knowledge of Subversion is
assumed.
Course outline
Subversion design philosophy and its advantages
- Typical copy-modify-merge scenario, how to solve simple conflicts
- Set user policies and guile-lines, make team collaboration smooth and
consistent
- Comparison of copy-modify-merge method and lock and unlock method
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., be aware of the constraints and do
not 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 backgroup 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.)