Gentoo Logo

How to obtain and test development versions of Portage


1.  Access to Portage GIT repositories

The Portage sourcecode is maintained within a GIT repository on If you are a dev: The main repository is located at git+ssh://, please note that it is subject to strict access controls, only people listed in the developers section on the portage project page are able to commit to it.

Note: It is assumed you know how to work with GIT.

Note: The repository can be viewed over GitWeb

The repository currently contains the following branches (incomplete list):

  • master: the current main development line
  • prefix: experimental branch with support for prefix installs
  • 2.1.7: current stable maintenance branch

Note: The old SVN repository still exists, but is not updated anymore or used in any other way.

2.  Creating snapshots from Portage GIT repositories

Code Listing 2.1: creating a snapshot from portage master branch

git clone git://
snapshot_version=$(git describe --tags | sed -e 's|-\([0-9]\+\)-.\+$|_p\1|')
cd portage
./ ${snapshot_version#v}

3.  Testing multiple Portage versions

Note: This section only applies to Portage 2.1.2 or later

There are various reasons why you'd want to have multiple versions of portage available at the same time without having to install them as system default. Examples would be to check which versions are affected by a specific bug, to test new features before deploying a new version or have a GIT checkout available for testing while keeping a stable release for normal operation.

As of Portage-2.1.2 one can have and use an arbitrary number of Portage installations parallel to each other by adjusting the two environment variables PATH and PYTHONPATH. For example if you have a checkout of the master branch at /checkouts/portage you'd set them like this:

Code Listing 3.1: settings to use portage master branch

export PYTHONPATH="/checkouts/portage/pym${PYTHONPATH:+:}${PYTHONPATH}"
export PATH="/checkouts/portage/bin:${PATH}"

With those settings calling tools like emerge, repoman or ebuild will pickup the correct locations to import libraries. External tools like gentoolkit or porthole may or may not respect those settings though. Setting PATH isn't even necessary if you always call the commands by their full name (e.g. /checkouts/portage/bin/emerge instead of emerge).


Page updated June 14, 2007

Summary: This document some notes about how interested users and developers can get get access to our Subversion repository and how to use it without replacing their main Portage installation.

Marius Mauch

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.