Git Overview

We are using git for source code revision control and to facilitate collaboration. if you are not already familiar with git, here are some resources to help familiarise yourself with git.

A git tutorial

A good interactive tutorial for learning git branching is at http://pcottle.github.io/learnGitBranching/.

Both the Main and Remote tutorials are worth doing, either in their entirety or at least the first few sections of each.

Hosting a shared repository at CSE

We provide a group account that will allow you to create a git repository that is shared between members of your group. As you can see below, my group (99) is in /home/aos99, and I have permission to (via the group permission) to use the directory.

kevine@weill% cd /home/aos99
kevine@weill% ls -al
total 24
drwxrws---   2 aos99 aos99  4096 Aug  1 16:47 .
drwxr-xr-x 372 root  root  20480 Aug  1 16:47 ..
kevine@weill%

Before you start use the directory, both you and your partner will need to modify your umask so you and your partner create files and directories accessible via the group permissions by default (if you're interested, see man umask for details). Do this by modifying your .profile in your home directory. Change the umask command to be the following:

% umask 007

Now, whenever you log in, your umask will be set appropriately. Either log out and log back in again now or run the command source .profile to ensure your umask is set.

To set up a shared repository, simply clone the one in the class account.

kevine@weill% git clone /home/cs9242/public_git/aos-YYYY
Cloning into 'aos-YYYY'...
done.
Checking out files: 100% (2592/2592), done.
kevine@weill%

Now you have a shared repository to work with your partner. Thus you need to clone a working copy to where ever you will be doing your development. For example, on my laptop:

mako$ cd where_ever
mako$ git clone ssh://kevine@login.cse.unsw.edu.au//home/aos99/aos-YYYY
Cloning into 'aos-20YY'...
remote: Counting objects: 2835, done.
remote: Compressing objects: 100% (2294/2294), done.
remote: Total 2835 (delta 422), reused 2835 (delta 422)
Receiving objects: 100% (2835/2835), 7.30 MiB | 8.43 MiB/s, done.
Resolving deltas: 100% (422/422), done.

I can now pull and push patches to and from my laptop from and to my shared repository respectively, at /home/aos99 at CSE.

Using external hosting

Do not use a public repository (i.e. a public hosting service) for collaboration with your partner.

Specifically, do not use github.com unless you have a paid private repository.

Bitbucket

Bitbucket is a commercial git repository hosting service that is free for repositories shared between 5 users or less.

We in no way endorse this service except to point out that it supports private repositories at no cost. Use it at your own risk.

While we prefer (strongly encourage :-) ) you to use CSE to host your repository, using bitbucket might be an alternative students prefer. We won't prevent you doing what is most efficient for you and your partner as long as the shared repository is private to you and your partner.