Difference between revisions of "Portage Git Mirror"

From Funtoo Linux
Jump to: navigation, search
(Use case)
 
(6 intermediate revisions by 3 users not shown)
Line 2: Line 2:
  
 
This tutorial explains how to save bandwidth when several local computers need to pull updates from a single remote git repository.
 
This tutorial explains how to save bandwidth when several local computers need to pull updates from a single remote git repository.
 
:author: Tristan de Cacqueray
 
:contact: tc@gcm-sarl.eu :
 
:copyright: GCM SARL
 
:license: Creative Commons Attribution 3.0 Unported License
 
  
 
== Use case ==
 
== Use case ==
Line 14: Line 9:
 
Following terms should be adapted
 
Following terms should be adapted
  
<table>
+
<table border="1">
<thead>
+
 
<tr class="header">
 
<tr class="header">
 
<th align="left">Terms</th>
 
<th align="left">Terms</th>
<th align="left">| Definition</th>
+
<th align="left">Definition</th>
 
</tr>
 
</tr>
</thead>
 
<tbody>
 
 
<tr class="odd">
 
<tr class="odd">
 
<td align="left">git.lan</td>
 
<td align="left">git.lan</td>
Line 38: Line 30:
 
<td align="left">Base path of git-daemon</td>
 
<td align="left">Base path of git-daemon</td>
 
</tr>
 
</tr>
</tbody>
 
 
</table>
 
</table>
  
Line 46: Line 37:
  
 
Prepare directories and clone portage-mini from github::
 
Prepare directories and clone portage-mini from github::
 
+
<pre>
<pre>   root@git.lan # mkdir /home/git-mirrors
+
    root@git.lan # mkdir /home/git-mirrors
 
     root@git.lan # chown nobody /home/git-mirrors
 
     root@git.lan # chown nobody /home/git-mirrors
 
     root@git.lan # su -s /bin/sh nobody
 
     root@git.lan # su -s /bin/sh nobody
 
     nobody $ cd /home/git-mirrors
 
     nobody $ cd /home/git-mirrors
     nobody $ git clone --mirror --bare</pre>
+
     nobody $ git clone --mirror --bare git://github.com/funtoo/portage-mini-2011.git portage.git
git://github.com/funtoo/portage-mini-2010.git portage.git
+
</pre>
  
 
Configure git-daemon in ''/etc/conf.d/git-daemon''::
 
Configure git-daemon in ''/etc/conf.d/git-daemon''::
 
+
<pre>
<pre>   GITDAEMON_OPTS=&quot;--syslog --verbose --enable=receive-pack --export-all&quot;
+
    GITDAEMON_OPTS=&quot;--syslog --verbose --enable=receive-pack --export-all&quot;
     GITDAEMON_OPTS=&quot;${GITDAEMON_OPTS} --base-path=/home/git-mirrors</pre>
+
     GITDAEMON_OPTS=&quot;${GITDAEMON_OPTS} --base-path=/home/git-mirrors /home/git-mirrors&quot;
/home/git-mirrors&quot; GIT_USER=&quot;nobody&quot; GIT_GROUP=&quot;nobody&quot;
+
    GIT_USER=&quot;nobody&quot;
 +
    GIT_GROUP=&quot;nobody&quot;
 +
</pre>
  
 
Start Daemon::
 
Start Daemon::
 +
<pre>
 +
    root@git.lan # /etc/init.d/git-daemon start
 +
    root@git.lan # rc-update add git-daemon default
 +
</pre>
  
<pre>    root@git.lan # /etc/init.d/git-daemon start
 
    root@git.lan # rc-update add git-daemon default</pre>
 
 
=== Pull from remote ===
 
=== Pull from remote ===
  
Line 81: Line 76:
 
     root@localhost # cd /usr/portage
 
     root@localhost # cd /usr/portage
 
     root@localhost # git checkout funtoo.org</pre>
 
     root@localhost # git checkout funtoo.org</pre>
 +
[[Category:HOWTO]]

Latest revision as of 13:31, 22 August 2011

Contents

[edit] 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.

[edit] 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

[edit] Local mirror

[edit] Git-daemon configuration

Prepare directories and clone portage-mini from github::

    root@git.lan # mkdir /home/git-mirrors
    root@git.lan # chown nobody /home/git-mirrors
    root@git.lan # su -s /bin/sh nobody
    nobody $ cd /home/git-mirrors
    nobody $ git clone --mirror --bare git://github.com/funtoo/portage-mini-2011.git portage.git

Configure git-daemon in /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"

Start Daemon::

    root@git.lan # /etc/init.d/git-daemon start
    root@git.lan # rc-update add git-daemon default

[edit] Pull from remote

Add to /etc/cron.daily/funtoo-sync.sh::

    #!/bin/sh

    cd /home/git-mirrors/portage.git
    su nobody -s "/bin/sh" -c "git fetch --all"

[edit] Cloning from local git-daemon

Local clone from git.lan::

    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
Personal tools
Namespaces

Variants
Actions
Categories
Toolbox
Stuff