How to obtain and test development versions of Portage
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
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
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.
Creating snapshots from Portage GIT repositories
Code Listing 2.1: creating a snapshot from portage master branch
git clone git://git.overlays.gentoo.org/proj/portage.git
snapshot_version=$(git describe --tags | sed -e 's|-\([0-9]\+\)-.\+$|_p\1|')
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
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).
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-2.5 license. The Gentoo Name and Logo Usage Guidelines apply.