Difference between revisions of "Portage Git Mirror"

(Git-daemon configuration)
(Git-daemon configuration)
Line 35: Line 35:
  
 
=== Git-daemon configuration ===
 
=== Git-daemon configuration ===
 
+
==== Prepare directories and get portage tree====
Prepare directories and clone portage tree from github::
+
 
<console>
 
<console>
 
###i## mkdir /home/git-mirrors
 
###i## mkdir /home/git-mirrors
Line 44: Line 43:
 
$##bl## git clone --mirror --bare git://github.com/funtoo/ports-2012.git portage.git
 
$##bl## git clone --mirror --bare git://github.com/funtoo/ports-2012.git portage.git
 
</console>
 
</console>
 +
For a security reason we use a nobody user .
 +
==== git-daemon configuration====
 +
{{file|name=/etc/conf.d/git-daemon|desc=|body=
 +
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
 +
}}
  
Configure git-daemon in <code>/etc/conf.d/git-daemon</code>:
+
====Service configuration====
 
+
To start daemon with a mirror machine boot add <code>git-daemon</code> to OpenRC's default runlevel
<pre>
+
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;
+
GIT_USER=&quot;nobody&quot;
+
GIT_GROUP=&quot;nobody&quot;
+
</pre>
+
 
+
Start the daemon:
+
 
<console>
 
<console>
###i## /etc/init.d/git-daemon start
 
 
###i## rc-update add git-daemon default
 
###i## rc-update add git-daemon default
 +
</console>
 +
To make changes start immediately just run <code>rc</code>
 +
<console>
 +
###i## rc
 
</console>
 
</console>
  

Revision as of 11:28, 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 get portage tree

# mkdir /home/git-mirrors
# chown nobody /home/git-mirrors
# su -s /bin/sh nobody
$ cd /home/git-mirrors
$ 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
GIT_USER=nobody
GIT_GROUP=nobody

Service configuration

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

# rc-update add git-daemon default

To make changes start immediately just run rc

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

Cloning from local git-daemon

Local clone from git.lan:

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