Difference between revisions of "Portage Git Mirror"

From Funtoo
Jump to navigation Jump to search
(4 intermediate revisions by the same user not shown)
Line 36: Line 36:
=== Git-daemon configuration ===
=== Git-daemon configuration ===


Prepare directories and clone portage-mini from github::
Prepare directories and clone portage tree from github::
<console>
<console>
###i## mkdir /home/git-mirrors
###i## mkdir /home/git-mirrors
Line 46: Line 46:


Configure git-daemon in <code>/etc/conf.d/git-daemon</code>:
Configure git-daemon in <code>/etc/conf.d/git-daemon</code>:
<console>
 
###i## nano /etc/conf.d/git-daemon
<pre>
GITDAEMON_OPTS=&quot;--syslog --verbose --enable=receive-pack --export-all&quot;
GITDAEMON_OPTS=&quot;--syslog --verbose --enable=receive-pack --export-all&quot;
GITDAEMON_OPTS=&quot;${GITDAEMON_OPTS} --base-path=/home/git-mirrors /home/git-mirrors&quot;
GITDAEMON_OPTS=&quot;${GITDAEMON_OPTS} --base-path=/home/git-mirrors /home/git-mirrors&quot;
GIT_USER=&quot;nobody&quot;
GIT_USER=&quot;nobody&quot;
GIT_GROUP=&quot;nobody&quot;
GIT_GROUP=&quot;nobody&quot;
</console>
</pre>


Start the daemon:
Start the daemon:
<console>
<console>
root@git.lan###i## /etc/init.d/git-daemon start
###i## /etc/init.d/git-daemon start
root@git.lan###i## rc-update add git-daemon default
###i## rc-update add git-daemon default
</console>
</console>


Line 63: Line 63:


Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>:
Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>:
<console>
 
###i## nano /etc/cron.daily/funtoo-sync.sh
<pre>
#!/bin/sh
#!/bin/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;
su nobody -s "/bin/sh" -c "git fetch --all"
</console>
</pre>


== Cloning from local git-daemon ==
== Cloning from local git-daemon ==

Revision as of 11:15, December 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 tree from github::

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

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 the daemon:

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

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 --all"

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