Essential CVS (Essentials)

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:

Chapter 1, What Is CVS?

This chapter is an overview of CVS, versioning systems, and the practical uses of CVS.

Chapter 2, CVS Quickstart Guide

If you need to get up to speed rapidly, this is the chapter for you. It explains how to build and use a basic CVS repository with the default settings and a minimum of extras.

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:

Chapter 3, Basic Use of CVS

This chapter explains the everyday CVS commands and conceptsthe ones that almost everyone who uses CVS will need. Each command is accompanied by an example and a description of the most commonly used options to the command.

Commands in this chapter include add, remove, commit, and update. Concepts covered include the CVS repository and sandboxes, conflicts and merges, using CVS with binary files, and switching repositories.

Chapter 4, Tagging and Branching

Tagging, branching, and merging branches back to the trunk are closely related topics. This chapter explains tagging and branching, including why and when to tag or branch your project, tagging before releases, and using branching to create a bugfix version of a project.

Chapter 5, Multiple Users

This chapter explains the systems used in CVS to permit multiple developers to work on the same project without loss of data. For example, it discusses the commands available for displaying changes to files.

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:

Chapter 6, Repository Management

This chapter discusses repository management and the modules in the repository. It covers creating a repository and estimating disk space, the structure of the CVS repository, configuration and permissions, repository security, and hand-editing a repository.

Chapter 7, Project Management

This chapter covers the tools used by project administrators. Topics include importing and exporting projects, using the cvs admin command, reading the output of the logging commands, and using the info configuration files to interact with bug-tracking systems or to enforce log-message formats.

Chapter 8, Remote Repositories

Most projects involve a repository on a different machine from the client. This chapter discusses security considerations, methods of remote access, and how to set up each method.

Chapter 9, Troubleshooting

Every tool has its caveats and gotchas. This chapter provides examples of things that can go wrong when using CVS and how to fix them.

Part IV is designed to be used as a reference manual. It includes the following chapters:

Chapter 10, Command Reference

This chapter provides a list of CVS commands, including the syntax and options for each command.

Chapter 11, Miscellaneous Topics Reference

This chapter covers CVS administrative files, environment variables that affect CVS, date formats, pattern matching, and repository access methods, in reference form.

Part V contains brief information on and pointers to various third-party tools that work with CVS. It includes the following appendixes:

Appendix A, Clients and Operating Systems

This appendix discusses third-party CVS clients for the Windows, Unix, GNU/Linux, and Macintosh operating systems. It also discusses the tools that integrate CVS with programmers' integrated development environments (IDEs).

Appendix B, Administrators' Tools

Because CVS is a useful open source tool, people have written third-party tools for it. This appendix explains some of the useful third-party tools available for CVS.

Appendix C, Frequently Asked Questions

This appendix is a collection of frequently asked questions from the info-cvs mailing lists, and the answers to those questions.

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:

Italic

Used to indicate CVS commands and their options, CVS configuration file keywords, filenames and directory names, emphasis, and the first use of technical terms.

Constant width

Used in code examples and to show the contents of files.

Constant width italic

Used in syntax descriptions to indicate user-defined items.

Constant width bold

Used to indicate user input in examples that show both input and output.

[ ]

Square brackets enclose optional elements in syntax diagrams.

{ }

Braces enclose lists of elements from which you are required to make one choice.

|

Vertical bars separate elements in lists that are enclosed by square brackets ([...]) or braces ({...}).

...

Ellipses are used within syntax diagrams to indicate repetition. Ellipses are also used in code examples to indicate nonessential command output that has been eliminated for the sake of clarity and space.

(tab)

In some syntax diagrams, (tab) is used to indicate a point at which you must type a tab character.

SSH, ssh

I use SSH (uppercase, regular text) as an acronym when referring to the Secure Shell protocol. I use ssh (lowercase, italic text) to refer to the Unix command often used to invoke an SSH program.

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.

Related Books

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.

Support

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 info-cvs@nongnu.org for discussion and support and bugs-cvs@nongnu.org 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 permissions@oreilly.com.

How To Contact Us

Please address comments and questions concerning this book to the publisher:

O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (in the United States or Canada)
707-829-0515 (international or local)
707-829-0104 (fax)

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:

http://www.oreilly.com/catalog/essentialcvs2/

To comment or ask technical questions about this book, send email to:

bookquestions@oreilly.com

For more information about our books, conferences, Resource Centers, and the O'Reilly Network, see our web site at:

http://www.oreilly.com

Safari® Enabled

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.

Категории