The Joy of Automation 159 Development Process Policies 209 Integrating SVN with the Development Process 235

“svnbook” — 2005414 — 14:55 — page xi — 10 ✐ ✐ ✐ ✐ ✐ ✐ ✐ Contents xi 9.3.3 Migrating from SourceSafe 133 9.3.4 Migrating from Other VCSs 134 9.3.5 What If There’s No Migration Tool? 134 9.4 Summary 136

Chapter 10 Administrating the Repository 137

10.1 Controlling Access to the Repository 137 10.1.1 Direct Access Control 138 10.1.2 svnserve Access Control 138 10.1.3 HTTPHTTPS Access Control 140 10.1.4 Authenticating against a Windows Domain Controller 146 10.2 Backing Up the Repository 149 10.2.1 Hotcopying the Repository 149 10.2.2 Dumping the Repository 150 10.2.3 Automating Your Backups 151 10.2.4 Recovering 153 10.3 Unwedging Your Repository 154 10.4 Upgrading Subversion 156 10.5 Summary 156

Chapter 11 The Joy of Automation 159

11.1 An Introduction to Hooks 160 11.1.1 Available Hook Scripts 160 11.1.2 What a Hook Script Can Do 162 11.1.3 What a Hook Script Can’t Do 163 11.1.4 Tips for a Good Hook Script 164 11.1.5 The Pre-made Subversion Scripts 167 11.2 Making the Most of Hook Scripts 167 11.2.1 Automatically Send E-mails 167 11.2.2 Send Notifications via RSS 172 11.2.3 Implement Fine-grain Access Controls 185 11.2.4 Enforce Policy 187 11.2.5 Log Revision Property Changes 188 11.2.6 Make Tags Immutable 189 11.3 Taking Advantage of Metadata 191 11.3.1 The Subversion Commands 191 11.4 The Subversion API 198 “svnbook” — 2005414 — 14:55 — page xii — 11 ✐ ✐ ✐ ✐ ✐ ✐ ✐ xii Contents 11.4.1 svntag 198 11.5 Summary 206 Part IV The Software Development Process 207

Chapter 12 Development Process Policies 209

12.1 Effective Branching and Tagging 209 12.1.1 Branch and Tag Creation and Organization 209 12.1.2 Merging Policies 216 12.2 Checking In Code 217 12.3 Log Data 219 12.3.1 Policies for Informative Logs 220 12.3.2 Parseable Log Messages 221 12.3.3 What Not to Include 222 12.4 Project Builds 223 12.4.1 Configuration 223 12.4.2 Daily Builds 224 12.4.3 Integration 226 12.5 Testing and Quality Assurance 227 12.5.1 The Parts of Testing 227 12.6 Communication 230 12.6.1 Communicating through Subversion 230 12.6.2 Communicating about Subversion 232 12.7 Enforcing Policies 232 12.8 Summary 233

Chapter 13 Integrating SVN with the Development Process 235

13.1 SVN in Different Developers’ Workflows 235 13.1.1 The Methodical Programmer 235 13.1.2 The Collaborator 236 13.1.3 The Lone Hacker 237 13.1.4 The Guru 238 13.1.5 The Rookie 239 13.1.6 The Hobbyist Programmer 239 13.2 Using SVN in Peer Reviews 240 13.2.1 Tracking Peer Review Status 240 13.2.2 Distributing Material for Peer Reviews 242 “svnbook” — 2005414 — 14:55 — page xiii — 12 ✐ ✐ ✐ ✐ ✐ ✐ ✐ Contents xiii 13.2.3 Performing Peer Reviews 244 13.3 Tying Revisions to Issue Tracking 246 13.3.1 Issue-tracking Properties 246 13.3.2 Automating Interaction with Issue Tracking 247 13.4 Summary 249

Chapter 14 Case Studies in Development Processes 251