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.)