Difference between pages "Talk:Portage Git Mirror" and "Portage Git Mirror"

(Difference between pages)
m
 
m (Downstream Clients Settings)
 
Line 1: Line 1:
{{PageNeedsUpdates}}
+
=Setting up local git mirror =
{{SectionNeedsUpdates}}
+
  
were fetching the git tree from upstream....
+
This tutorial explains how to save bandwidth when several local computers need to pull updates from a single remote git repository.
  
so now how do we set our portage so emerge --sync pulls from our localized git repository?[[User:Threesixes|Threesixes]] ([[User talk:Threesixes|talk]]) 01:46, December 14, 2014 (UTC)
+
== Use case ==
:ok so previous post i posted only to note the syntax... actually testing it today, it wants to fetch from upstream instead of the local git...  mv /usr/portage /usr/portage.old probably must occur on dirty systems previously syncing against funtoo. [[User:Threesixes|Threesixes]] ([[User talk:Threesixes|talk]]) 22:18, December 18, 2014 (UTC)
+
 
 +
This tutorial will be about hosting a local mirror of funtoo git based portage tree.
 +
 
 +
Following terms should be adapted
 +
 
 +
{{TableStart}}
 +
<tr class="header">
 +
<th align="left">Terms</th>
 +
<th align="left">Definition</th>
 +
</tr>
 +
<tr class="odd">
 +
<td align="left">git.lan</td>
 +
<td align="left">The git-daemon local mirror host</td>
 +
</tr>
 +
<tr class="even">
 +
<td align="left">localhost</td>
 +
<td align="left">Any local host</td>
 +
</tr>
 +
<tr class="odd">
 +
<td align="left">nobody</td>
 +
<td align="left">Owner user of .git files</td>
 +
</tr>
 +
<tr class="even">
 +
<td align="left">/home/git-mirrors</td>
 +
<td align="left">Base path of git-daemon</td>
 +
</tr>
 +
{{TableEnd}}
 +
 
 +
== Local mirror ==
 +
 
 +
==== Prepare directories and get portage tree====
 +
<console>
 +
###i## mkdir /home/git-mirrors
 +
###i## chown nobody /home/git-mirrors
 +
###i## su -s /bin/sh nobody
 +
$##bl## cd /home/git-mirrors
 +
$##bl## git clone --mirror --bare git://github.com/funtoo/ports-2012.git portage.git
 +
</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 --interpolated-path=/home/git-mirrors"
 +
GIT_USER=nobody
 +
GIT_GROUP=nobody
 +
}}
 +
 
 +
====Service configuration====
 +
To start daemon with a mirror machine boot add <code>git-daemon</code> to default runlevel
 +
<console>
 +
###i## rc-update add git-daemon default
 +
</console>
 +
To make changes start immediately just run <code>rc</code>
 +
<console>
 +
###i## rc
 +
</console>
 +
 
 +
=== Pull from remote ===
 +
 
 +
Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>:
 +
 
 +
<pre>
 +
#!/bin/sh
 +
cd /home/git-mirrors/portage.git
 +
su nobody -s "/bin/sh" -c "git fetch"
 +
</pre>
 +
 
 +
== Cloning from local git-daemon ==
 +
 
 +
Local clone from <code>git.lan</code>:
 +
<console>
 +
###i## mv /usr/portage /usr/portage.old
 +
###i## git clone git://git.lan/portage.git /usr/portage
 +
###i## cd /usr/portage
 +
###i## git checkout funtoo.org
 +
</console>
 +
 
 +
== Downstream Clients Settings ==
 +
machines previously syncing to upstream mirrors need their portage moved:
 +
<console>###i## mv /usr/portage /usr/portage.old</console>
 +
 
 +
{{file|name=/etc/portage/make.conf|lang=|desc=define client sync source for emerge --sync|body=
 +
SYNC="git://git.lan/portage.git"}}
 +
 
 +
[[Category:HOWTO]]

Latest revision as of 22:22, December 18, 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

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

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

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

Downstream Clients Settings

machines previously syncing to upstream mirrors need their portage moved:

# mv /usr/portage /usr/portage.old
/etc/portage/make.conf: define client sync source for emerge --sync
SYNC="git://git.lan/portage.git"