Version Control by Example

Table of Contents

1. Introduction
A History of Version Control
My Background
Reading this book
I. Centralized Version Control
2. Basics
Create
Checkout
Commit
Update
Add
Edit
Delete
Rename
Move
Status
Diff
Revert
Log
Tag
Branch
Merge
Resolve
Lock
3. Basics with Subversion
Create
Checkout, Add, Status, Commit
Log, Diff
Update, Commit (with a merge)
Update (with merge)
Move
Rename
Delete
Lock, Revert
Tag
Branch
Merge (no conflicts)
Merge (repeated, no conflicts)
Merge (conflicts)
Summary
II. Distributed Version Control
4. More Basics
Clone
Push
Pull
Directed Acyclic Graphs (DAGs)
5. Advantages
Private Workspace
Fast
Offline
Geography
Flexible Workflows
Easier Merging
Implicit Backup
Scale out, not just up
6. Weaknesses
Locks
Very Large Repositories
Integration
Obliterate
Administration
Path-Based Access Control
Ease of Use
GUIs
7. Basics with Mercurial
Create
Clone, Add, Status, Commit
Push, Pull, Log, Diff
Update, Commit (with a merge)
Update (with merge)
Move
Rename
Delete
Revert
Tag
Branch
Merge (no conflicts)
Merge (repeated, no conflicts)
Merge (conflicts)
Summary
8. Basics with Git
Create
Clone, Add, Status, Commit
Push, Pull, Log, Diff
Update, Commit (with a merge)
Update (with merge)
Move
Rename
Delete
Revert
Tag
Branch
Merge (no conflicts)
Merge (repeated, no conflicts)
Merge (conflicts)
Summary
9. About Veracity
Decentralized Database
User Accounts
Commercial Open Source
Designed for Integration
Apache License 2.0
Formal Rename and Move
Repository Storage Plugins
Multiple Working Copies
Locks
JavaScript
Stamp
Hash Functions
Scrum
10. Basics with Veracity
Create
Clone, Add, Status, Commit
Push, Pull, Log, Diff
Update, Commit (with a merge)
Update (with merge)
Move
Rename
Delete
Lock, Revert
Tag
Branch
Merge (no conflicts)
Merge (repeated, no conflicts)
Merge (conflicts)
Summary
III. Beyond Basics
11. Workflows
Managing Multiple Releases
Shrinkwrap
Polishing Branches
Release Branches
Feature Branches
Web
12. DVCS Internals
Deltas
Git: Cryptographic Hashes
Example with SHA-1
Collisions
Mercurial: Repository Structure
Revlogs
Manifests
Changesets
Veracity: DAGs and Data
DAGs and Blobs
Changesets
Treenodes
DB Records
Templates
Repository Storage
Blob Encodings
13. Best Practices
Run diff just before you commit, every time
Read the diffs from other developers too
Keep your repositories as small as possible
Group your commits logically
Explain your commits completely
Only store the canonical stuff
Don’t break the tree
Use tags
Always review the merge before you commit.
Never obliterate anything
Don’t comment out code
Use locks sparingly
Build and test your code after every commit
A. Comparison Table
Glossary
Index