["Tutorial"] - cloning a repository

We have followed TutorialInstall to install ["Mercurial"] already, right? Good!

In ["Mercurial"], we do all of our work inside a ["Repository"]. A ["Repository"] is a directory that contains all of the source files that we want to keep history of, along with complete histories of those source files.

The easiest way to get started with ["Mercurial"] is to use a ["Repository"] that already contains some files and some history.

To do this, we use the clone command. This makes a ["Clone"] of a ["Repository"]; it makes a complete copy of another ["Repository"] so that we will have our own local, private one to work in.

 $ hg clone http://www.serpentine.com/hg/hello my-hello

[Note: sorry, but this isn't a real URL yet, because ["Mercurial"] doesn't yet allow you to ["Serve"] multiple repositories using a single daemon. I'm working on a fix.]

[Until this fix is in place, one can use

 $ hg clone http://selenic.com/hg my-hg-clone

to try things out whith an already working repository. WARNING, this repository is not the smallest thing out there.]

If all goes well, the clone command prints no output. We should now find a directory called my-hello in our current directory:

 $ ls
 my-hello

Inside the my-hello directory, we'll find some files:

 $ ls my-hello
 hello.c  Makefile

These files are exact copies of the files in the ["Repository"] we just ["Clone"]d.

Note: in ["Mercurial"], each ["Repository"] is self-contained. When you ["Clone"] a ["Repository"], the new ["Repository"] becomes an exact copy of the existing one at the time of the ["Clone"], but subsequent changes in either one /will not show up/ in the other unless you explicitly transfer them.

At this point, we can start examining some of the history of our new ["Repository"], by continuing to TutorialHistory.