“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