Prefaceauthors would like to thank Brian Behlendorf and CollabNet for the vision to fund such arisky and ambitious new open source project; Jim Blandy for the original <strong>Subversion</strong> nameand design—we love you, Jim; and Karl Fogel for being such a good friend and a greatcommunity leader, in that order. 1Thanks to O'Reilly and our various editors: Chuck Toporek, Linda Mui, Tatiana Apandi,Mary Brady, and Mary Treseler. Their patience and support has been tremendous.Finally, we thank the countless people who contributed to this book <strong>with</strong> informal reviews,suggestions, and patches. While this is undoubtedly not a complete list, this book would beincomplete and incorrect <strong>with</strong>out their help: Bhuvaneswaran A, David Alber, C. ScottAnanian, David Anderson, Ariel Arjona, Seth Arnold, Jani Averbach, Charles Bailey, RyanBarrett, Francois Beausoleil, Brian R. Becker, Yves Bergeron, Karl Berry, Jennifer Bevan,Matt Blais, Jim Blandy, Phil Bordelon, Sietse Brouwer, Tom Brown, Zack Brown, MartinBuchholz, Paul Burba, Sean Callan-Hinsvark, Branko Cibej, Archie Cobbs, Jason Cohen,Ryan Cresawn, John R. Daily, Peter Davis, Olivier Davy, Robert P. J. Day, Mo DeJong,Brian Denny, Joe Drew, Markus Dreyer, Nick Duffek, Boris Dusek, Ben Elliston, Justin Erenkrantz,Jens M. Felderhoff, Kyle Ferrio, Shlomi Fish, Julian Foad, Chris Foote, MartinFurter, Vlad Georgescu, Peter Gervai, Dave Gilbert, Eric Gillespie, David Glasser, MarcelGosselin, Lieven Govaerts, Steve Greenland, Matthew Gregan, Tom Gregory, MaverickGrey, Art Haas, Mark E. Hamilton, Eric Hanchrow, Liam Healy, Malte Helmert, MichaelHenderson, Øyvind A. Holm, Greg Hudson, Alexis Huxley, Auke Jilderda, Toby Johnson,Jens B. Jorgensen, Tez Kamihira, David Kimdon, Mark Benedetto King, Robert Kleemann,Erik Kline, Josh Knowles, Andreas J. Koenig, Axel Kollmorgen, Nuutti Kotivuori, KalinKozhuharov, Matt Kraai, Regis Kuckaertz, Stefan Kueng, Steve Kunkee, Scott Lamb, WesleyJ. Landaker, Benjamin Landsteiner, Vincent Lefevre, Morten Ludvigsen, Dennis Lundberg,Paul Lussier, Bruce A. Mah, Jonathon Mah, Karl Heinz Marbaise, Philip Martin, FelicianoMatias, Neil Mayhew, Patrick Mayweg, Gareth McCaughan, Craig McElroy, SimonMcKenna, Christophe Meresse, Jonathan Metillon, Jean-Francois Michaud, Jon Middleton,Robert Moerland, Marcel Molina Jr., Tim Moloney, Alexander Mueller, Tabish Mustufa,Christopher Ness, Roman Neuhauser, Mats Nilsson, Greg Noel, Joe Orton, Eric Paire, DimitriPapadopoulos-Orfanos, Jerry Peek, Chris Pepper, Amy Lyn Pilato, Kevin Pilch-Bisson,Hans Polak, Dmitriy Popkov, Michael Price, Mark Proctor, Steffen Prohaska, DanielRall, Srinivasa Ramanujan, Jack Repenning, Tobias Ringstrom, Jason Robbins, GarrettRooney, Joel Rosdahl, Christian Sauer, Ryan Schmidt, Jochem Schulenklopper, JensSeidel, Daniel Shahaf, Larry Shatzer, Danil Shopyrin, Erik Sjoelund, Joey Smith, W.Snyder, Stefan Sperling, Robert Spier, M. S. Sriram, Russell Steicke, David Steinbrunner,Sander Striker, David Summers, Johan Sundstroem, Ed Swierk, John Szakmeister, ArfreverFrehtes Taifersar Arahesis, Robert Tasarz, Michael W. Thelen, Mason Thomas, Erikvan der Kolk, Joshua Varner, Eric Wadsworth, Chris Wagner, Colin Watson, Alex Waugh,Chad Whitacre, Andy Whitcroft, Josef Wolf, Luke Worth, Hyrum Wright, Blair Zajac, FlorianZumbiehl, and the entire <strong>Subversion</strong> community.From Ben Collins-SussmanThanks to my wife Frances, who, for many months, got to hear “But honey, I'm still workingon the book,” rather than the usual “But honey, I'm still doing email.” I don't know whereshe gets all that patience! She's my perfect counterbalance.Thanks to my extended family and friends for their sincere encouragement, despite havingno actual interest in the subject. (You know, the ones who say, “Ooh, you wrote a book?”and then when you tell them it's a computer book, sort of glaze over.)Thanks to all my close friends, who make me a rich, rich man. Don't look at me thatway—you know who you are.Thanks to my parents for the perfect low-level formatting and being unbelievable role models.Thanks to my kids for the opportunity to pass that on.1 Oh, and thanks, Karl, for being too overworked to write this book yourself.xviii
PrefaceFrom Brian W. FitzpatrickHuge thanks to my wife Marie for being incredibly understanding, supportive, and most ofall, patient. Thank you to my brother Eric who first introduced me to Unix programming wayback when. Thanks to my Mom and Grandmother for all their support, not to mention enduringa Christmas holiday where I came home and promptly buried my head in my laptopto work on the book.To Mike and Ben: it was a pleasure working <strong>with</strong> you on the book. Heck, it's a pleasureworking <strong>with</strong> you at work!To everyone in the <strong>Subversion</strong> community and the Apache Software Foundation, thanksfor having me. Not a day goes by where I don't learn something from at least one of you.Lastly, thanks to my grandfather, who always told me that “freedom equals responsibility.” Icouldn't agree more.From C. Michael PilatoSpecial thanks to Amy, my best friend and wife of more than ten incredible years, for herlove and patient support, for putting up <strong>with</strong> the late nights, and for graciously enduring theversion control processes I've imposed on her. Don't worry, sweetheart—you'll be a TortoiseSVNwizard in no time!Gavin, you're able to read half of the words in this book yourself now; sadly, it's the otherhalf that provide the key concepts. And sorry, Aidan — I couldn't find a way to work Disney/Pixar characters into the text. But Daddy loves you both, and can't wait to teach you aboutprogramming.Mom and Dad, thanks for your constant support and enthusiasm. Mom- and Dad-in-law,thanks for all of the same plus your fabulous daughter.Hats off to Shep Kendall, through whom the world of computers was first opened to me;Ben Collins-Sussman, my tour guide through the open source world; Karl Fogel, you aremy .emacs; Greg Stein, for oozing practical programming know-how; and BrianFitzpatrick, for sharing this writing experience <strong>with</strong> me. To the many folks from whom I amconstantly picking up new knowledge—keep dropping it!Finally, to the One who perfectly demonstrates creative excellence—thank You.What Is <strong>Subversion</strong>?<strong>Subversion</strong> is a free/open source version control system. That is, <strong>Subversion</strong> managesfiles and directories, and the changes made to them, over time. This allows you to recoverolder versions of your data or examine the history of how your data changed. In this regard,many people think of a version control system as a sort of “time machine.”<strong>Subversion</strong> can operate across networks, which allows it to be used by people on differentcomputers. At some level, the ability for various people to modify and manage the sameset of data from their respective locations fosters collaboration. Progress can occur morequickly <strong>with</strong>out a single conduit through which all modifications must occur. And becausethe work is versioned, you need not fear that quality is the trade-off for losing that conduit—ifsome incorrect change is made to the data, just undo that change.Some version control systems are also software configuration management (SCM) systems.These systems are specifically tailored to manage trees of source code and havemany features that are specific to software development—such as natively understandingprogramming languages, or supplying tools for building software. <strong>Subversion</strong>, however, isnot one of these systems. It is a general system that can be used to manage any collectionof files. For you, those files might be source code—for others, anything from grocery shop-xix
- Page 1 and 2: Version Control with SubversionFor
- Page 4 and 5: Table of ContentsForeword .........
- Page 6 and 7: Version Control with SubversionFeat
- Page 9 and 10: List of Figures1. Subversion's arch
- Page 11 and 12: List of Examples5.1. txn-info.sh (r
- Page 13 and 14: Forewordyou come back to it later,
- Page 15 and 16: Prefacea particular scenario and no
- Page 17: PrefaceChapter 7, Customizing Your
- Page 21 and 22: PrefaceThe original design team set
- Page 23 and 24: PrefaceA program for reporting the
- Page 25 and 26: Chapter 1. Fundamental ConceptsThis
- Page 27 and 28: Fundamental Conceptsperson to chang
- Page 29 and 30: Fundamental ConceptsFigure 1.5. The
- Page 31 and 32: Fundamental Conceptsmergeable—tha
- Page 33 and 34: Fundamental ConceptsWorking CopiesY
- Page 35 and 36: Fundamental Concepts$ svn commit bu
- Page 37 and 38: Fundamental Conceptscalc/Makefile:6
- Page 39 and 40: Fundamental Conceptsthis flexibilit
- Page 41 and 42: Basic Usagesvn importYou can get ne
- Page 43 and 44: Basic UsageWhile your working copy
- Page 45 and 46: Basic UsageUpdate Your Working Copy
- Page 47 and 48: Basic UsageLook Ma! No Network!You
- Page 49 and 50: Basic Usagesvn status can display m
- Page 51 and 52: Basic Usage$ svn updateU INSTALLG R
- Page 53 and 54: Basic Usageflict on a file-by-file
- Page 55 and 56: Basic UsageMortadellaProsciutto====
- Page 57 and 58: Basic UsageLog message unchanged or
- Page 59 and 60: Basic Usage$ svn log -r 8 -v-------
- Page 61 and 62: Basic Usage$Lastly, you can compare
- Page 63 and 64: Basic Usagethe entire thing, but yo
- Page 65 and 66: Advanced TopicsThe most recent revi
- Page 67 and 68: Advanced Topicschanges occurs as pa
- Page 69 and 70:
Advanced Topicsproperty 'copyright'
- Page 71 and 72:
Advanced TopicsBut even if you have
- Page 73 and 74:
Advanced Topicstypes-files runtime
- Page 75 and 76:
Advanced Topicsits value to populat
- Page 77 and 78:
Advanced TopicsThe Subversion runti
- Page 79 and 80:
Advanced TopicsIn this example, you
- Page 81 and 82:
Advanced Topicssomething like $Id:
- Page 83 and 84:
Advanced Topics$Author:: $: Author
- Page 85 and 86:
Advanced TopicsA mom-immediates/son
- Page 87 and 88:
Advanced TopicsNow, as is common in
- Page 89 and 90:
Advanced Topics$ svn info banana.jp
- Page 91 and 92:
Advanced TopicsRevision: 105Node Ki
- Page 93 and 94:
Advanced Topicsrampant and the whol
- Page 95 and 96:
Advanced TopicsBecause the svn:exte
- Page 97 and 98:
Advanced Topicsclient doesn't suppo
- Page 99 and 100:
Advanced Topicsperforms the request
- Page 101 and 102:
Advanced TopicsThe idea behind this
- Page 103 and 104:
Advanced TopicsMM$integer.cmathops.
- Page 105 and 106:
Advanced TopicsThe --changelist opt
- Page 107 and 108:
Advanced Topics• For other Unix-l
- Page 109 and 110:
Chapter 4. Branching and Merging“
- Page 111 and 112:
Branching and MergingSecond, it's n
- Page 113 and 114:
Branching and Merging$ svn checkout
- Page 115 and 116:
Branching and Mergingternal concept
- Page 117 and 118:
Branching and Mergingchanges by run
- Page 119 and 120:
Branching and Mergingyou've been do
- Page 121 and 122:
Branching and MergingAfter performi
- Page 123 and 124:
Branching and MergingThat was the h
- Page 125 and 126:
Branching and Merging$ svn propget
- Page 127 and 128:
Branching and MergingWhile the firs
- Page 129 and 130:
Branching and MergingM .$ svn propg
- Page 131 and 132:
Branching and MergingNoticing or Ig
- Page 133 and 134:
Branching and MergingFor now, if yo
- Page 135 and 136:
Branching and Mergingyour next svn
- Page 137 and 138:
Branching and Mergingthe section ca
- Page 139 and 140:
Branching and Mergingbug fixes cont
- Page 141 and 142:
Branching and Mergingneed to questi
- Page 143 and 144:
Branching and Merging• It can be
- Page 145 and 146:
Chapter 5. Repository Administratio
- Page 147 and 148:
Repository Administrationise of the
- Page 149 and 150:
Repository Administrationwhere the
- Page 151 and 152:
Repository Administrationbase—not
- Page 153 and 154:
Repository AdministrationEarlier in
- Page 155 and 156:
Repository Administrationare using
- Page 157 and 158:
Repository AdministrationOne except
- Page 159 and 160:
Repository Administrationand theref
- Page 161 and 162:
Repository AdministrationEach item
- Page 163 and 164:
Repository AdministrationTo protect
- Page 165 and 166:
Repository Administration* Dumped r
- Page 167 and 168:
Repository AdministrationThe dump f
- Page 169 and 170:
Repository Administrationmeans that
- Page 171 and 172:
Repository Administrationthe source
- Page 173 and 174:
Repository Administration$ svnsync
- Page 175 and 176:
Repository Administrationmirror fro
- Page 177 and 178:
Repository AdministrationThe result
- Page 179 and 180:
Repository Administration$For folks
- Page 181 and 182:
Server ConfigurationFeature Apache
- Page 183 and 184:
Server ConfigurationRecommendations
- Page 185 and 186:
Server Configurationsvn 3690/udp #
- Page 187 and 188:
Server ConfigurationIt's also possi
- Page 189 and 190:
Server Configurationtp://asg.web.cm
- Page 191 and 192:
Server Configurationbaz…In this e
- Page 193 and 194:
Server Configurationcess Methods”
- Page 195 and 196:
Server ConfigurationNote that if mo
- Page 197 and 198:
Server ConfigurationSetting up HTTP
- Page 199 and 200:
Server Configurationserver really w
- Page 201 and 202:
Server ConfigurationDAV svnSVNParen
- Page 203 and 204:
Server ConfigurationOnce you've set
- Page 205 and 206:
Server ConfigurationCustomizing the
- Page 207 and 208:
Server ConfigurationThis configurat
- Page 209 and 210:
Server ConfigurationCaveatsneed to
- Page 211 and 212:
Server Configurationsection names a
- Page 213 and 214:
Server Configurationharry = CN=Haro
- Page 215 and 216:
Server Configuration• Set the gro
- Page 217 and 218:
Customizing Your Subversion Experie
- Page 219 and 220:
Customizing Your Subversion Experie
- Page 221 and 222:
Customizing Your Subversion Experie
- Page 223 and 224:
Customizing Your Subversion Experie
- Page 225 and 226:
Customizing Your Subversion Experie
- Page 227 and 228:
changes), the “mine” file (whic
- Page 229 and 230:
Customizing Your Subversion Experie
- Page 231 and 232:
Embedding Subversionlibsvn_reposRep
- Page 233 and 234:
Embedding Subversionuse of path str
- Page 235 and 236:
Embedding SubversionIf the Subversi
- Page 237 and 238:
Embedding SubversionAs we mentioned
- Page 239 and 240:
Embedding Subversionagainst APR, mu
- Page 241 and 242:
Embedding SubversionCode SamplesExa
- Page 243 and 244:
Embedding SubversionExample 8.2. Us
- Page 245 and 246:
Embedding Subversionsvn.client.svn_
- Page 247 and 248:
Subversion Complete Reference--user
- Page 249 and 250:
Subversion Complete ReferencePreven
- Page 251 and 252:
Subversion Complete Referencesvn Su
- Page 253 and 254:
Subversion Complete Reference$ svn
- Page 255 and 256:
Subversion Complete Referenceline-n
- Page 257 and 258:
Subversion Complete ReferenceNamesv
- Page 259 and 260:
Subversion Complete ReferenceNamesv
- Page 261 and 262:
Subversion Complete ReferenceNamesv
- Page 263 and 264:
Subversion Complete ReferenceSendin
- Page 265 and 266:
Subversion Complete Reference--pare
- Page 267 and 268:
Subversion Complete ReferenceNamesv
- Page 269 and 270:
Subversion Complete ReferenceNamesv
- Page 271 and 272:
Subversion Complete Reference$ svn
- Page 273 and 274:
Subversion Complete ReferenceNamesv
- Page 275 and 276:
Subversion Complete ReferenceNamesv
- Page 277 and 278:
Subversion Complete Referencehttp:/
- Page 279 and 280:
Subversion Complete Reference• Co
- Page 281 and 282:
Subversion Complete ReferenceNamesv
- Page 283 and 284:
Subversion Complete ReferenceNamesv
- Page 285 and 286:
Subversion Complete ReferenceNamesv
- Page 287 and 288:
Subversion Complete ReferenceAdded
- Page 289 and 290:
Subversion Complete ReferenceNamesv
- Page 291 and 292:
Subversion Complete ReferenceNamesv
- Page 293 and 294:
Subversion Complete ReferenceNamesv
- Page 295 and 296:
Subversion Complete ReferenceNamesv
- Page 297 and 298:
Subversion Complete ReferenceNamesv
- Page 299 and 300:
Subversion Complete ReferenceNamesv
- Page 301 and 302:
Subversion Complete ReferenceNamesv
- Page 303 and 304:
Subversion Complete ReferenceNamesv
- Page 305 and 306:
Subversion Complete ReferenceNamesv
- Page 307 and 308:
Subversion Complete Reference$ svn
- Page 309 and 310:
Subversion Complete ReferenceThe se
- Page 311 and 312:
Subversion Complete Referencecopy:$
- Page 313 and 314:
Subversion Complete Reference--revi
- Page 315 and 316:
Subversion Complete ReferenceNamesv
- Page 317 and 318:
Subversion Complete ReferenceYesOpt
- Page 319 and 320:
Subversion Complete Referencesvnadm
- Page 321 and 322:
Subversion Complete ReferenceNamesv
- Page 323 and 324:
Subversion Complete ReferenceNamesv
- Page 325 and 326:
Subversion Complete ReferenceNamesv
- Page 327 and 328:
Subversion Complete ReferenceNamesv
- Page 329 and 330:
Subversion Complete ReferenceNamesv
- Page 331 and 332:
Subversion Complete ReferenceNamesv
- Page 333 and 334:
Subversion Complete ReferenceNamesv
- Page 335 and 336:
Subversion Complete ReferenceNamesv
- Page 337 and 338:
Subversion Complete ReferenceNamesv
- Page 339 and 340:
Subversion Complete ReferenceNamesv
- Page 341 and 342:
Subversion Complete ReferenceNamesv
- Page 343 and 344:
Subversion Complete ReferenceNamesv
- Page 345 and 346:
Subversion Complete ReferenceNamesv
- Page 347 and 348:
Subversion Complete ReferenceNamesv
- Page 349 and 350:
Subversion Complete ReferenceNamesv
- Page 351 and 352:
Subversion Complete ReferenceNamesv
- Page 353 and 354:
Subversion Complete ReferenceNamesv
- Page 355 and 356:
Subversion Complete ReferenceNamesv
- Page 357 and 358:
Subversion Complete ReferenceNamesv
- Page 359 and 360:
Subversion Complete ReferenceNamesv
- Page 361 and 362:
Subversion Complete ReferenceNamesv
- Page 363 and 364:
Subversion Complete Referencesvnser
- Page 365 and 366:
Subversion Complete ReferenceNamesv
- Page 367 and 368:
Subversion Complete ReferenceNamesv
- Page 369 and 370:
Subversion Complete Reference$ svnv
- Page 371 and 372:
Subversion Complete Referencenaviga
- Page 373 and 374:
Subversion Complete ReferenceNamemo
- Page 375 and 376:
Subversion Complete ReferenceNamest
- Page 377 and 378:
Subversion Complete ReferenceNamepo
- Page 379 and 380:
Subversion Complete ReferenceNamepo
- Page 381 and 382:
Subversion Complete ReferenceNamepo
- Page 383 and 384:
Subversion Complete ReferenceNamepo
- Page 385 and 386:
Subversion Quick-Start GuideAAAAA
- Page 387 and 388:
Subversion Quick-Start GuideUsage.A
- Page 389 and 390:
Subversion for CVS Userswant to all
- Page 391 and 392:
Subversion for CVS Usersrepository)
- Page 393 and 394:
Subversion for CVS UsersAs with CVS
- Page 395 and 396:
WebDAV and Autoversioninga number o
- Page 397 and 398:
WebDAV and AutoversioningSoftware T
- Page 399 and 400:
WebDAV and Autoversioningdav:/repos
- Page 401 and 402:
WebDAV and Autoversioning$ mount -t
- Page 403 and 404:
Copyrightunmodified form, along wit
- Page 405 and 406:
Copyrightcomparable authorship cred
- Page 407 and 408:
IndexBBASE, 40CCOMMITTED, 40Concurr