Difference between revisions of "Portage Git Mirror"

From Funtoo
Jump to: navigation, search
(Git-daemon configuration)
(Pull from remote)
Line 62: Line 62:
=== Pull from remote ===
=== Pull from remote ===
Add to /etc/cron.daily/funtoo-sync.sh::
Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>:
<pre>   #!/bin/sh
###i## nano /etc/cron.daily/funtoo-sync.sh
    cd /home/git-mirrors/portage.git
cd /home/git-mirrors/portage.git
    su nobody -s &quot;/bin/sh&quot; -c &quot;git fetch --all&quot;</pre>
su nobody -s &quot;/bin/sh&quot; -c &quot;git fetch --all&quot;</pre>
== Cloning from local git-daemon ==
== Cloning from local git-daemon ==

Revision as of 21:43, January 13, 2014

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:

root # nano /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"

Start the daemon:

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

Pull from remote

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

      1. i## nano /etc/cron.daily/funtoo-sync.sh
  1. !/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