Difference between revisions of "Portage Git Mirror"

From Funtoo
Jump to navigation Jump to search
 
m (found the --sync settings for portage in the install guide)
(20 intermediate revisions by 3 users not shown)
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 ==


=== Git-daemon configuration ===
==== 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
}}


Prepare directories and clone portage-mini from github::
====Service configuration====
<pre>
To start daemon with a mirror machine boot add <code>git-daemon</code> to default runlevel
    root@git.lan # mkdir /home/git-mirrors
<console>
    root@git.lan # chown nobody /home/git-mirrors
###i## rc-update add git-daemon default
    root@git.lan # su -s /bin/sh nobody
</console>
    nobody $ cd /home/git-mirrors
To make changes start immediately just run <code>rc</code>
    nobody $ git clone --mirror --bare git://github.com/funtoo/portage-mini-2011.git portage.git
<console>
</pre>
###i## rc
</console>
 
=== Pull from remote ===


Configure git-daemon in ''/etc/conf.d/git-daemon''::
Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>:
<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 Daemon::
<pre>
<pre>
    root@git.lan # /etc/init.d/git-daemon start
#!/bin/sh
    root@git.lan # rc-update add git-daemon default
cd /home/git-mirrors/portage.git
su nobody -s "/bin/sh" -c "git fetch"
</pre>
</pre>


=== Pull from remote ===
== Cloning from local git-daemon ==
 
Add to /etc/cron.daily/funtoo-sync.sh::
 
<pre>    #!/bin/sh


    cd /home/git-mirrors/portage.git
Local clone from <code>git.lan</code>:
    su nobody -s &quot;/bin/sh&quot; -c &quot;git fetch --all&quot;</pre>
<console>
 
###i## mv /usr/portage /usr/portage.old
== Cloning from local git-daemon ==
###i## git clone git://git.lan/portage.git /usr/portage
###i## cd /usr/portage
###i## git checkout funtoo.org
</console>


Local clone from git.lan::
== 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"}}


<pre>    root@localhost # mv /usr/portage /usr/portage.old
    root@localhost # git clone git://git.lan/portage.git /usr/portage
    root@localhost # cd /usr/portage
    root@localhost # git checkout funtoo.org</pre>
[[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 --sync
SYNC="git://git.lan/portage.git"