Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Portage Git Mirror

From Funtoo
Revision as of 10:47, December 17, 2014 by Threesixes (talk | contribs) (found the --sync settings for portage in the install guide)
Jump to navigation Jump to search

Setting up local git mirror

This tutorial explains how to save bandwidth when several local computers need to pull updates from a single remote git repository.

Use case

This tutorial will be about hosting a local mirror of funtoo git based portage tree.

Following terms should be adapted

Terms Definition
git.lan The git-daemon local mirror host
localhost Any local host
nobody Owner user of .git files
/home/git-mirrors Base path of git-daemon

Local mirror

Prepare directories and get portage tree

root # mkdir /home/git-mirrors
root # chown nobody /home/git-mirrors
root # su -s /bin/sh nobody
user $ cd /home/git-mirrors
user $ git clone --mirror --bare git://github.com/funtoo/ports-2012.git portage.git

For a security reason we use a nobody user .

git-daemon configuration

   /etc/conf.d/git-daemon
GITDAEMON_OPTS="--syslog --verbose --enable=receive-pack --export-all"
GITDAEMON_OPTS="${GITDAEMON_OPTS} --base-path=/home/git-mirrors /home/git-mirrors --interpolated-path=/home/git-mirrors"
GIT_USER=nobody
GIT_GROUP=nobody

Service configuration

To start daemon with a mirror machine boot add git-daemon to default runlevel

root # rc-update add git-daemon default

To make changes start immediately just run rc

root # rc

Pull from remote

Add the following to /etc/cron.daily/funtoo-sync.sh:

#!/bin/sh
cd /home/git-mirrors/portage.git
su nobody -s "/bin/sh" -c "git fetch"

Cloning from local git-daemon

Local clone from git.lan:

root # mv /usr/portage /usr/portage.old
root # git clone git://git.lan/portage.git /usr/portage
root # cd /usr/portage
root # git checkout funtoo.org

Downstream Clients Settings

   /etc/portage/make.conf - define client sync source for emerge --sync
SYNC="git://git.lan/portage.git"