+++ /dev/null
-Version control is a way to keep a track of changing files and store a
-history of those changes and the motivation behind them. This
-organized history allows many people in a collaboration to make
-changes concurrently, while staying up to date with changes made by
-their collaborators. It also makes it easy to keep yourself organized
-if you store similar files in several different locations (e.g. a
-project that you develop on both your home computer and your work
-computer).
-
-Basic use
-=========
-
-Learning objectives
--------------------
-
-* Draw a diagram showing the places version control stores
- information.
-* Check out a working copy of a repository.
-* View the history of changes to a project.
-* Add files to a project.
-* Commit changes made to the working copy.
-* Get changes from an upstream repository.
-* Compare the current state of a working copy to the most recent
- update from the upstream repository.
-* Explain what "version 123 of `xyz.txt`" actually means.
-
-Key points
-----------
-
-* Version control is a better way to manage shared files than email or
- shared folders.
-* People share their changes by committing them to public repositories
- and fetch other's changes by updating their local copy from public
- repositories.
-* The version control system prevents people from overwriting each
- other's work by making merges explicit.
-* It also keeps a complete history of changes made to the master so
- that old versions can be recovered reliably.
-* Version control systems work best with text files, but can also
- handle binary files such as images and Word documents.
-* Every repository is identified by a URL.
-* Each change to the master copy is identified by a unique revision
- ID.
-* Revisions identify snapshots of the entire repository, not changes
- to individual files.
-* Each change should be commented to make the history more readable.
-* Commits are transactions: either all changes are successfully
- committed, or none are.
-
-Merging conflicts
-=================
-
-Learning objectives
--------------------
-
-* Explain what causes conflicts to occur and how to tell when one has
- occurred.
-* Resolve a conflict.
-
-Key points
-----------
-
-* Conflicts must be resolved before a commit can be completed.
-* Most version control systems put markers in text files to show
- regions of conflict.
-
-Recovering old versions
-=======================
-
-Learning objectives
--------------------
-
-* Discard changes made to a working copy.
-* Recover an old version of a file.
-* Explain what branches are and when they are used.
-
-Key points
-----------
-
-* Recovering an old version of a file may not erase the intervening
- changes.
-* Use branches to support parallel independent development.
-
-Setting up a repository
-=======================
-
-Learning objectives
--------------------
-
-* How to create a repository.
-
-Key points
-----------
-
-* Repositories can be hosted locally, on local (departmental) servers,
- on hosting services, or on their owners' own domains.
-
-Provenance
-==========
-
-Learning objectives
--------------------
-
-* What data provenance is.
-* How to embed version numbers and other information in files managed
- by version control.
-* How to record version information about a program in its output.
-
-Key points
-----------
-
-* Put version numbers in programs' output to establish provenance for
- data.