GetTheCode

Get the code

Oxide lives in a Git repository hosted on Launchpad. A full checkout consists of this plus all of the Chromium repositories. There are some tools to assist you with checking out the code.

You can view the repositories hosted on Launchpad here.

Requirements

Disk space

A full checkout will use around 13GB of disk space, even before you've built it.

Network

Checking out the code will transfer over 7GB of data across the network, so you will want to do this on a fast, un-metered connection.

Tools

You will need Python 2.7 and Git installed.

Preparation

Install depot_tools

depot_tools is a set of tools that are useful for Chromium development. Oxide only uses gclient, and we use a slightly modified version of this which supports "git clone --reference" (see man git clone), and contains a few other minor changes.

To checkout depot_tools:

git clone https://git.launchpad.net/~oxide-developers/oxide/+git/depot_tools <destination>

... where <destination> is the directory you want to check it out to.

Once you have done this, you will need to add the <destination> to your PATH environment variable.

Install oxide-tools

oxide-tools currently only consists of a single script to assist you with getting the code. In the future, it will probably grow custom git commands to help with particular development workflows.

To checkout oxide-tools:

git clone https://git.launchpad.net/~oxide-developers/oxide/+git/oxide-tools <destination>

... where <destination> is the directory you want to check it out to.

Once you have done this, you will need to add <destination> to your PATH environment variable. Please ensure it appears before the path to depot_tools.

Getting the code

To perform a basic checkout of master, you can run:

fetch_oxide <destination>

... where <destination> is the directory you want to check the code out to.

After the checkout, the source root is <destination>/src. Oxide lives at <destination>/src/oxide.

Checking out a release branch

To check out a release branch, you can run:

fetch_oxide -b <branch> <destination>

... where <branch> is the branch name.

Cloning repositories from Launchpad using SSH

By default, repositories hosted on Launchpad are cloned using https. If you want to be able to push changes back to Launchpad (committers only), you should clone Launchpad hosted repositories using SSH. To do this, you need to run:

fetch_oxide --user-id <user_id> <destination>

... where <user_id> is your Launchpad user ID.

You will need to upload your SSH key to Launchpad - see https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair

Creating a checkout from a local mirror

It's possible to create a checkout from a local mirror, in order to reduce network usage. To do this you can run:

fetch_oxide --cache-dir <cache_dir> <destination>

... where <cache_dir> is the path to your local mirror. It will be created automatically if it doesn't exist already.

When using --cache-dir, repositories are cloned using "--reference <path_to_mirror> <remote>" by default (see man git clone). To use the default upstream behaviour of gclient (which clones repositories using "--shared <path_to_mirror>"), you can pass "--cache-mode=full" to fetch_oxide. Note that this does break some developer workflows, eg git fetch and git push interact with the local mirror rather than the remote. This mode is only really suitable in environments such as CI infrastructure, and isn't particularly useful for developers.

Note that if you move or delete your local mirror, or move your checkout to a location where it can't access the local mirror, your checkout will break. It is strongly recommended that you run the following, post-checkout, from the src/ directory:

./oxide/tools/configure-checkout.py dissociate

Your checkout will no longer be dependent on the local mirror. This copies objects from the local mirror in to your checkout, thus eliminating any disk-space saving.

Updating your checkout

To update your checkout, you can run this from the src/oxide directory:

git pull origin
./tools/update-checkout.py

Oxide/GetTheCode (last edited 2016-06-08 18:14:30 by chrisccoulson)