CVS (Concurrent Versions System) is a tool that enables you to track changes to a set of files over time. CVS is commonly used in software development, for instance, to allow multiple developers to coordinate changes, track versions, and permit simultaneous development of different versions of the same code.
This book is not just for software developers. It is for anyone who produces things that change. CVS can manage versions of anything that can be stored in files, so it is useful for programmers, system administrators, software architects, writers, graphic artists, and user-interface (UI) specialists. Outside the computing field, it can be used by authors, poets, managers, architects, engineers, accountants, and other people running their everyday lives.
Changes for the Second Edition
First, Essential CVS, Second Edition, is current for both the stable and feature tracks of CVS. Feature releases contain new CVS features as well as current bug fixes. At the time I'm writing this, the current versions are stable CVS 1.11.22, and feature CVS 1.12.13; the book is up to date for these versions. Most CVS features are available in both the stable and the feature versions of CVS. Where there is a difference, it is mentioned in the book.
Second, I've added and expanded the examples in general, and specifically added screenshots and examples of using graphical CVS clients to run CVS commands.
Another feature of the second edition that I'm excited about is the sidebarsI've provided chatty sidebars explaining how I've used CVS in the past, or how a command could be used. I've also provided sidebars that discuss aspects or features of Unix that you need to know.
There's a new appendixa FAQ. I went through the CVS mailing list and grabbed the questions that kept being repeated. They're now answered in the FAQ appendix of Essential CVS!
Finally, the text is tightened up in general. I've clarified things more, and added explanations and cross-references.
I'd like to thank all my reviewers and every reader who wrote to me or to O'Reilly. I've learned a lot about writing from all of you, and a lot about what makes the difference between a good book and a great book.
I believe that the second edition of this book is a lot closer to the Great Australian Technical Book than the first edition was.
Structure of the Book
This book can be read out of sequence, so you can learn about any aspect of CVS at the time you need it. However, the concepts are presented in a logical order, and they might be more easily understood if you read the chapters in order. The book is organized into five parts.
Part I explains the basic concepts of CVS and includes a quickstart guide. If you don't already know CVS, read the quickstart guide before going on to the rest of the book. Part I includes the following chapters:
Part II explains the core concepts behind CVS and describes the commands that most people use on a day-to-day basis. Part II consists of the following chapters:
Part III is for project managers and repository administrators. The chapters can be read in any order, but later chapters assume familiarity with commands explained in earlier chapters. Part III includes the following chapters:
Part IV is designed to be used as a reference manual. It includes the following chapters:
Part V contains brief information on and pointers to various third-party tools that work with CVS. It includes the following appendixes:
In addition to the five parts just described, this book also contains a pull-out CVS quick-reference card for when you need a quick reminder of command syntax.
Conventions Used in This Book
The following typographical conventions are used in this book:
Learning More About CVS
In addition to this book, there are a number of other helpful CVS resources that you should know about. CVS has an active user community, and additional resources may become available over time.
Web Site and Manpages
The CVS home page is at http://cvs.nongnu.org. This site provides a copy of the info cvs manual by Per Cederqvist et al.; a CVS FAQ; and links to most of the available third-party tools for CVS.
The official web site for the book (http://www.oreilly.com/catalog/essentialcvs2/) and my personal web site (http://essential-cvs.vesperman.id.au) will have extra information added to them over time that may prove useful or interesting.
On Unix and Linux systems, the man cvs and info cvs commands provide documentation for the server and the command-line client.
The CVS Pocket Reference, by Gregor N. Purdy (O'Reilly), is a useful take-anywhere book.
Applying RCS and SCCS, by Don Bolinger and Tan Bronson (O'Reilly), explains RCS, which is the tool that CVS calls to manage individual files within its database.
Pragmatic Version Control Using CVS, by Dave Thomas and Andy Hunt (The Pragmatic Programmers), is an example-based book about using CVS.
Open Source Development with CVS, by Moshe Bar and Karl Franz Fogel (Paraglyph Press) contains a guide to CVS and a guide to open source project management. It is available online at http://cvsbook.red-bean.com.
Version Management with CVS, by Per Cederqvist et al. (Network Theory Ltd.), is published online at http://ximbiot.com/cvs/manual/ and is also available as info cvs.
Linux Server Hacks, by Rob Flickenger (O'Reilly), contains 11 hacks for using CVS as a system administrator.
CVS is an open source project. Although there's no one company backing CVS and providing support for it, you can get a wealth of support from your fellow CVS users. The official CVS mailing lists are available at http://savannah.nongnu.org/mail/?group=cvs. The most important lists are firstname.lastname@example.org for discussion and support and email@example.com for bug reports.
Using Code Examples
This book is here to help you get your job done. In general, you may use the code in this book in your programs and documentation. You do not need to contact us for permission unless you're reproducing a significant portion of the code. For example, writing a program that uses several chunks of code from this book does not require permission. Selling or distributing a CD-ROM of examples from O'Reilly books does require permission. Answering a question by citing this book and quoting example code does not require permission. Incorporating a significant amount of example code from this book into your product's documentation does require permission.
We appreciate, but do not require, attribution. An attribution usually includes the title, author, publisher, and ISBN. For example: "Essential CVS, Second Edition, by Jennifer Vesperman. Copyright 2007 O'Reilly Media, Inc., 978-0-596-52703-7."
If you feel your use of code examples falls outside fair use or the permission given above, feel free to contact us at firstname.lastname@example.org.
How To Contact Us
Please address comments and questions concerning this book to the publisher:
We have a web page for this book, where we list errata, code examples, and any additional information. Corresponding files for code examples are mentioned on the first line of the example. You can access this page at:
To comment or ask technical questions about this book, send email to:
For more information about our books, conferences, Resource Centers, and the O'Reilly Network, see our web site at:
When you see a Safari® Enabled icon on the cover of your favorite technology book, that means the book is available online through the O'Reilly Network Safari Bookshelf.
Safari offers a solution that's better than e-books. It's a virtual library that lets you easily search thousands of top tech books, cut and paste code samples, download chapters, and find quick answers when you need the most accurate, current information. Try it for free at http://safari.oreilly.com.
Acknowledgments for the First Edition
No book is written in isolation, and I have had a lot of help with this one. My family and friends have been very encouraging and helpful, and the women and men of LinuxChix were there to keep me going when things were hard. Thank you all!
I would like to thank Chris Klint and David North for the donation of a laptop and a laptop hard drive when I had to travel while preparing the book. Thanks to Sonja Krause-Harder and Rebecca Walter Pedersen for SuSE information, Alan Cox and Telsa Gwynne for Red Hat information, and Akkana Peck for Red Hat testing. Thanks also go to Mia Ridge for Macintosh information and Michelle Peglar for the use of a Macintosh.
I am grateful to my editor, Jonathan Gennick. I thought I was a pretty good writer when I started, but I'm a much, much better writer now. Thank you, Jonathan.
Thank you to Derek Price for technical review. Your comments have ensured that the book is accurate and that it reflects the recommendations of the CVS developers.
Many thanks to Ellie Volckhausen, Betsy Waliszewski, Bonnie Sheehan, and all the others at O'Reilly who have worked hard to make this book happen.
To Dr. Anne Small and her team of dedicated medical professionals and support staffthank you. Without you, I would be an invalid, not an author, and I am eternally grateful.
I want to thank my dear friends Mike Whitaker and Richard Gencks for general encouragement and emotional support, especially when my wonderful grandmother died while I was reviewing the book. (I love you, Nan.)
And to my husband, Dancer Vesperman, and our housemate and friend Karen Hallthank you. There is no way I could have done this without you.
Acknowledgments for the Second Edition
Once again, I owe a great debt of thanks to many people for this book. Among the most important are family, friends, the LinuxChix members, and the Free Software/Open Source community in Melbourne, Australia.
Specific thanks go to Jonathan Gennick, Mary O'Brien, and Brian Jepson, my editors at O'Reilly. I would also like to thank the many people at O'Reilly who will work and have worked on this book and whose names I don't know. There is a great deal of effort involved in producing a book: please look on the copyright in this book. It wouldn't be in your hands if it weren't for the people listed there.
Thank you to Maria Blackmore, Tom Sgouros, and Christina Zeeh for technical editing. Your comments provided both technical corrections and clarifications. There are many places where I've reworded a phrase or expanded on a paragraph thanks to your advice, and the book is much improved for your efforts.
Christina Zeeh also provided information and screenshots specific to Macintosh computers, and Maria Blackmore and Brian Jepson assisted with examples on various distributions of Linux.
Carla Schroder is an invaluable support and a good friend, and would have also been doing technical editing if she were not busy writing her own book. Look for her books!
Once again, I am grateful to my medical team. Dedicated medical professionals and their support staff make a huge difference in life. Thank you, Dr. Small.
And finally, to Dancer Vesperman, Anastasia Vesperman, and Richard Gencks: I love you.