Version Control with Mercurial

Reference

A Better Kind of Backup

  • Create a ~/.hgrc (or %USERPROFILE%\Mercurial.ini on Windows) to configure a user name, email address, editor, and other preferences once per machine.
  • hg init initializes a repository.
  • hg status shows the status of a repository.
  • Files are stored in a project’s working directory (which users see), and the local repository (where committed snapshots are permanently recorded).
  • hg add tells Mercurial to track files.
  • hg commit creates a snapshot of the changes to 1 or more files in the local repository.
  • Always write a log message when committing changes.
  • hg diff displays differences between revisions.
  • hg revert recovers old versions of files.
  • The .hgignore file tells Mercurial what files to ignore.

Collaborating

  • A local Mercurial repository can be connected to one or more remote repositories.
  • Use the HTTPS protocol to connect to remote repositories until you have learned how to set up SSH.
  • hg push copies changes from a local repository to a remote repository.
  • hg pull copies changes from a remote repository to a local repository.
  • hg clone copies a remote repository to create a local repository with a remote called default automatically set up.

Conflicts

  • Conflicts occur when two or more people change the same file(s) at the same time.
  • The version control system does not allow people to blindly overwrite each other’s changes. Instead, it highlights conflicts so that they can be resolved.

Open Science

  • Open scientific work is more useful and more highly cited than closed.
  • People who incorporate GPL’d software into theirs must make theirs open; most other open licenses do not require this.
  • The Creative Commons family of licenses allow people to mix and match requirements and restrictions on attribution, creation of derivative works, further sharing, and commercialization.
  • People who are not lawyers should not try to write licenses from scratch.
  • Projects can be hosted on university servers, on personal domains, or on public forges.
  • Rules regarding intellectual property and storage of sensitive information apply no matter where code and data are hosted.

Glossary

changeset
A group of changes to one or more files that are committed to a version control repository in a single operation.
clone
To make a local copy of a version control repository. See also: fork.
commit
To record the current state of a set of files (a changeset) in a version control repository.
conflict
A change made by one user of a version control system that is incompatible with changes made by other users. Helping users resolve conflicts is one of version control’s major tasks.
fork
To clone a version control repository on a server.
HTTP
The Hypertext Transfer Protocol used for sharing web pages and other data on the World Wide Web.
infective license
A license such as the GPL that compels people who incorporate material into their own work to place similar sharing requirements on it.
Internet Service Provider (ISP)
A company or other organization that provides access to the Internet. Many ISPs provide hosting services for websites.
merge
To reconcile two sets of changes to a repository.
protocol
A set of rules that define how one computer communicates with another. Common protocols on the Internet include HTTP and SSH.
remote
A version control repository other than the current one that the current one is somehow connected to or mirroring.
repository
A storage area where a version control system stores old revisions of files and information about who changed what, when.
resolve
To eliminate the conflicts between two or more incompatible changes to a file or set of files being managed by a version control system.
revision
A recorded state of a version control repository.
SSH
The Secure Shell protocol used for secure communication between computers.
timestamp
A record of when a particular event occurred.
version control
A tool for managing changes to a set of files. Each set of changes creates a new revision of the files; the version control system allows users to recover old revisions reliably, and helps manage conflicting changes made by different users.