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