Portage Git Mirror

From Funtoo
Revision as of 13:31, August 22, 2011 by Oleg (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

Git-daemon configuration

Prepare directories and clone portage-mini from github::

    root@git.lan # mkdir /home/git-mirrors
    root@git.lan # chown nobody /home/git-mirrors
    root@git.lan # su -s /bin/sh nobody
    nobody $ cd /home/git-mirrors
    nobody $ git clone --mirror --bare git://github.com/funtoo/portage-mini-2011.git portage.git

Configure git-daemon in /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"
    GIT_USER="nobody"
    GIT_GROUP="nobody"

Start Daemon::

    root@git.lan # /etc/init.d/git-daemon start
    root@git.lan # rc-update add git-daemon default

Pull from remote

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

    #!/bin/sh

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

Cloning from local git-daemon

Local clone from git.lan::

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