Migrating Portage to Git
A week ago or so, we were vividly discussing the Portage Tree on Git issue
Beginning with Stage
20111114, Portage is by default synchronized with our Git server, located in Saint-Petersburg. The Git repository stores a Portage copy with truncated Manifest and Changelog data, thus compensating for the extra space occuped by Git. Running a complete
eix-sync over a 10 Mbit channel after, say, two days without syncing should take 30 seconds or so. Repeated syncing will mostly consist of updating portage cache and should require 20 seconds approximately.
To be able to run our Portage copy, we had to modify the overlay location. From now on Calculate Portage and Calculate Overlay are located, respectively, at:
Speed is not the only thing we're gaining. While preparing binary updates, we're normally correcting masks, USE flags and even dependencies. So after an upgrade, Portage keeps being updated, generating new masks and flag changes: some packages would be replaced with newer ones, some USE flags would be modified even though package versions are not... At best, all this would make the system compile packages that already have binary files; at worst, autounmask would be used. Using stages solves this problem definitely: Portage, the overlay and binary packages will be, from now on, completely corresponding.
Calculate Portage does not modify the original Portage. Therefore, you can always switch back to Gentoo Portage, still synchronized via RSYNC.
Another novelty is that fetching Git via the http protocol is supported. If you have no direct access to the Internet, you can configure Portage and the overlay so that they be updated via Proxy. All you have to do is change the path to the repository from
To modify the path to Calculate Overlay, just remove and then add again the overlay:
layman -d calculate
layman -a calculate
For Portage migration on Git, execute:
git clone --depth 1 git://git.calculate.ru/calculate/portage portage-git
rm -rf portage
mv portage-git portage
emerge -u portage
To enable updating via Proxy, please execute:
echo "proxy : http://PROXY:8080" >>/etc/layman/layman.cfg git config --global http.proxy PROXY:8080 sed -ri 's|(url = )git://|\1http://|' /var/lib/layman/calculate/.git/config sed -ri 's|(url = )git://|\1http://|' /usr/portage/.git/config
To fetch files through Proxy you may need to modify wget settings in
Syncing via the http protocol will be much slower, because the
"--depth 1" option is not supported for the time being. Hence, all commits will be fetched - which will result, yet, in somewhat slower traffic. This seems to be however a better solution than using RSYNC.
In further versions, we expect to make
cl-install configure updating via Proxy.