Difference between revisions of "Portage Git Mirror"
Jump to navigation
Jump to search
Threesixes (talk | contribs) m (found the --sync settings for portage in the install guide) |
|||
(13 intermediate revisions by 3 users not shown) | |||
Line 9: | Line 9: | ||
Following terms should be adapted | Following terms should be adapted | ||
{{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> | ||
{{TableEnd}} | |||
== Local mirror == | == Local mirror == | ||
=== | ==== Prepare directories and get portage tree==== | ||
Prepare directories and | |||
<console> | <console> | ||
###i## mkdir /home/git-mirrors | ###i## mkdir /home/git-mirrors | ||
Line 44: | Line 42: | ||
$##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 --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> | <console> | ||
###i## | ###i## rc-update add git-daemon default | ||
</console> | </console> | ||
To make changes start immediately just run <code>rc</code> | |||
<console> | <console> | ||
###i## rc | |||
</console> | </console> | ||
Line 63: | Line 64: | ||
Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>: | Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>: | ||
< | |||
<pre> | |||
#!/bin/sh | #!/bin/sh | ||
cd /home/git-mirrors/portage.git | cd /home/git-mirrors/portage.git | ||
su nobody -s | su nobody -s "/bin/sh" -c "git fetch" | ||
</ | </pre> | ||
== Cloning from local git-daemon == | == Cloning from local git-daemon == | ||
Line 79: | Line 80: | ||
###i## git checkout funtoo.org | ###i## git checkout funtoo.org | ||
</console> | </console> | ||
== Downstream Clients Settings == | |||
{{file|name=/etc/portage/make.conf|lang=|desc=define client sync source for emerge --sync|body= | |||
SYNC="git://git.lan/portage.git"}} | |||
[[Category:HOWTO]] | [[Category:HOWTO]] |
Revision as of 10:47, December 17, 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
Downstream Clients Settings
/etc/portage/make.conf
- define client sync source for emerge --syncSYNC="git://git.lan/portage.git"