Tutorials - Fab Academy at AS220 Labs - Providence, RI

Mecurial Setup on Mac (AS220 Server)

Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.

NOTE: after each line of code you type in - you need to hit the enter key.

Step 1: Install Mercurial

You need to download and install Mercurial (there is an installer)l: http://mercurial.selenic.com/

Step 2: Key files

You need to put key files (academy and academy.pub) where Mercurial can find them.

Open terminal

You will be in your home directory by default. Your prompt with look something like::

MyComputerName:~ myhomedirectoryname$ 

Where "MyComputerName" is the name of your hard disk and the "myhomedirectoryname is the username you created to login to Mac OS.

Type the following text into the terminal after the prompt:

sudo ls ~/.ssh  

You system will ask you for a password - type in the password you use as an adminstrator on your Mac (this is the same password you use to log into your computer).

NOTE: If the system responds with a message like:
 ls: cannot access /home/akaziuna/.ssh: No such file or directory
then you need to create the .ssh folder. If you do not get this message, skip the command below.


sudo mkdir ~/.ssh        

Within the .ssh directory you need to create another directory called keys.
To do this type:

sudo mkdir ~/.ssh/as220Keys

Download the keys that your instructor sent you in an email. They are named academy and academy.pub. You will need to place them in the keys directory. To do this, save the key files to your desktop from the email.

Change your location in the terminal by moving to the Desktop folder.


cd ~/Desktop

You need to move both of the keys from your desktop to the keys directory that you created earlier.


sudo mv academy ~/.ssh/as220Keys
Then type:
sudo mv academy.pub ~/.ssh/as220Keys

Both keys are now located in the .ssh directory. You can check to see by typing: sudo ls -l ~/.ssh/as220Keys to list the contents of the directory. You should see that academy and academy.pub are listed.

Step 3: Permissions for the Private Key

You need to set permissions for your private key so that only you have read/write access to them.


sudo chmod 600 ~/.ssh/as220Keys/academy 

sudo chmod 644 ~/.ssh/as220Keys/academy.pub 

Step 4: Setting the port

You will need to set the port that ssh uses to access fab.cba.mit.edu. You can do this by creating and editing a config file within your .ssh directory.


touch config

A file named config has been created on the desktop. Now we need to edit the file. This file should not have any extension.

Open the file with a text editor by typing:

nano config

Add the following text to the empty file:

host corkwood.dreamhost.com
port 22

To save the file:
- press [control]+O to save the file
- press [control]+X to exit the editor

Do not add any extension to the file.

Now we need to move it to the .ssh directory.


sudo mv config ~/.ssh/as220Keys

Step 5 Clone the archive

Now we need to clone the archive. For convenience, we will clone it to the desktop.

Copy the text and paste it into the terminal:

hg clone ssh://as220mercurial@corkwood.dreamhost.com//home/as220mercurial/hg/repos/academy.2013 as220.2013

I f you are cloning for the first time, you will be told that the "authenticity of the host cannot be established" and are given the option to type "yes" or "no".

Type "yes"

You will be asked for a password, this is password different than your system password- contact your instructor.

You should see the following response (or a similar response)in the terminal as the archive is cloned. Success!

requesting all changes
adding changesets
adding manifests
adding file changes
added 225 changesets with 8439 changes to 7765 files
updating to branch default
4479 files updated, 0 files merged, 0 files removed, 0 files unresolved
NOTE: The number of files listed varies with the number of files in archive. A folder named academy.2013 has been created on your desktop. This folder contains the archive.

Step 6: Edit the Configuration File

Now you need to edit your arcive's personal configuration file. To do this you need to move into the archive folder that you just created on the desktop. It is called academy.2013


cd as220.2013

You are now within the academy.2013 directory. Your path should change to : YourUsername@ubuntu:~/Desktop/academy.2013$

To edit your archive's personal configuration file (called hgrc) to reflect your name and email we need to open the file in a editior:


nano .hg/hgrc

A text editor will open inside of the terminal window. This text should already be in the file:

default = ssh://as220mercurial@corkwood.dreamhost.com//home/as220mercurial/hg/repos/academy.2013
NOTE: Do not change this text, just add to it - see step 5.

Put the following text in the file. Change the First and Last Name to your first and last name. Change the "<user@machine.domain>" text to your email address.

username = First Last <user@machine.domain>
ssh = ssh -p 22 -i ~/.ssh/as220Keys/academy -C
changegroup = hg update >&2

To save the file:
- press [control]+O to save the file
- press [control]+X to exit the editor

Step 7: Update the Archive

Now try updating your archive by typing:

hg pull

you should see a response like this:

searching for changes
           no changes found
           remote: buffer_get_ret: trying to get more bytes 4 than in buffer 0
           remote: buffer_get_string_ret: cannot extract length
           remote: key_from_blob: can't read key type
           remote: key_read: key_from_blob 
         remote:  failed
If you are asked for a password, then Mecurial can't find the keys or the key file permissions are wrong. (see steps 2 & 3)

If it says something about port 22, then you need to re-edit the config file (see step 4)

Working With Mercurial

To get all changes from the MIT repository into your repository:

hg pull

To add new files

hg add

To commit changes

hg commit -m 'MESSAGE'

To push files to server - Never force push!

hg push

Having Problems? Getting Strange Error Messages? - See:

Mercurial Troubleshooting