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)