Mercurial_ The Definitive Guide - Bryan O'Sullivan [0]
Table of Contents
Preface
Technical Storytelling
Thank You for Supporting Mercurial
Conventions Used in This Book
Using Code Examples
Safari® Books Online
How to Contact Us
This Book Is Free
Acknowledgments
1. A Brief History of Revision Control
Why Revision Control? Why Mercurial?
Why Use Revision Control?
The Many Names of Revision Control
This Book Is a Work in Progress
About the Examples in This Book
Trends in the Field
A Few Advantages of Distributed Revision Control
Advantages for Open Source Projects
Advantages for Commercial Projects
Why Choose Mercurial?
Mercurial Compared with Other Tools
Subversion
Git
CVS
Commercial Tools
Choosing a Revision Control Tool
Switching from Another Tool to Mercurial
A Short History of Revision Control
2. A Tour of Mercurial: The Basics
Installing Mercurial on Your System
Windows
Mac OS X
Linux
Solaris
Getting Started
Built-In Help
Working with a Repository
Making a Local Copy of a Repository
What’s in a Repository?
A Tour Through History
Changesets, Revisions, and Talking to Other People
Viewing Specific Revisions
More Detailed Information
All About Command Options
Making and Reviewing Changes
Recording Changes in a New Changeset
Setting Up a Username
Writing a Commit Message
Writing a Good Commit Message
Aborting a Commit
Admiring Our New Handiwork
Sharing Changes
Pulling Changes from Another Repository
Updating the Working Directory
Pushing Changes to Another Repository
Default Locations
Sharing Changes over a Network
Starting a New Project
3. A Tour of Mercurial: Merging Work
Merging Streams of Work
Head Changesets
Performing the Merge
Committing the Results of the Merge
Merging Conflicting Changes
Using a Graphical Merge Tool
A Worked Example
Simplifying the Pull-Merge-Commit Sequence
Renaming, Copying, and Merging
4. Behind the Scenes
Mercurial’s Historical Record
Tracking the History of a Single File
Managing Tracked Files
Recording Changeset Information
Relationships Between Revisions
Safe, Efficient Storage
Efficient Storage
Safe Operation
Fast Retrieval
Identification and Strong Integrity
Revision History, Branching, and Merging
The Working Directory
What Happens When You Commit
Creating a New Head
Merging Changes
Merging and Renames
Other Interesting Design Features
Clever Compression
Read/Write Ordering and Atomicity
Concurrent Access
Avoiding Seeks
Other Contents of the Dirstate
5. Mercurial in Daily Use
Telling Mercurial Which Files to Track
Explicit Versus Implicit File Naming
Mercurial Tracks Files, Not Directories
How to Stop Tracking a File
Removing a File Does Not Affect Its History
Missing Files
Useful Shorthand: Adding and Removing Files in One Step
Copying Files
The Results of Copying During a Merge
Why Should Changes Follow Copies?
How to Make Changes Not Follow a Copy
Behavior of the hg copy Command
Renaming Files
Renaming Files and Merging Changes
Divergent Renames and Merging
Convergent Renames and Merging
Other Name-Related Corner Cases
Recovering from Mistakes
Dealing with Tricky Merges
File Resolution States
Resolving a File Merge
More Useful Diffs
Which Files to Manage, and Which to Avoid
Backups and Mirroring
6. Collaborating with Other People
Mercurial’s Web Interface
Collaboration Models
Factors to Keep in Mind
Informal Anarchy
A Single Central Repository
A Hosted Central Repository
Working with Multiple Branches
Feature Branches
The Release Train
The Linux Kernel Model
Pull-Only Versus Shared-Push Collaboration
Where Collaboration Meets Branch Management
The Technical Side of Sharing
Informal Sharing with hg serve
A Few Things to Keep in Mind
Using the Secure Shell Protocol
How to Read and Write ssh URLs
Finding an ssh Client for Your System
Generating a Key Pair
Using an Authentication Agent
Configuring the Server Side Properly
Using Compression with ssh
Serving Over HTTP Using CGI
Web Server Configuration Checklist
Basic