Difference between revisions of "Portage Git Mirror"

From Funtoo
Jump to: navigation, search
(Pull from remote)
(Use case)
Line 9: Line 9:
 
Following terms should be adapted
 
Following terms should be adapted
  
<table border="1">
+
{{TableStart}}
 
<tr class="header">
 
<tr class="header">
 
<th align="left">Terms</th>
 
<th align="left">Terms</th>
Line 30: Line 30:
 
<td align="left">Base path of git-daemon</td>
 
<td align="left">Base path of git-daemon</td>
 
</tr>
 
</tr>
</table>
+
{{TableEnd}}
  
 
== Local mirror ==
 
== Local mirror ==

Revision as of 16:52, December 14, 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

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