Difference between revisions of "Portage Git Mirror"

From Funtoo Linux
Jump to: navigation, search
Line 1: Line 1:
=========================== Setting up local git mirror ===========================
+
=Setting up local git mirror =
  
:keywords: linux, funtoo, git, mirror :description:
+
This tutorial explains how to save bandwidth when several local computers need to pull updates from a single remote git repository.
  
This tutorial explain 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
  
:version: 2010-10-08 :author: Tristan de Cacqueray :contact: tc@gcm-sarl.eu :copyright: GCM SARL :license: Creative Commons Attribution 3.0 Unported License :language: English
+
== Use case ==
 
+
= Use case =
+
  
 
This tutorial will be about hosting a local mirror of funtoo git based portage tree.
 
This tutorial will be about hosting a local mirror of funtoo git based portage tree.
  
 
Following terms should be adapted
 
Following terms should be adapted
 
  
 
<table>
 
<table>
Line 43: Line 43:
 
</table>
 
</table>
  
 +
== Local mirror ==
  
= Local mirror =
+
=== Git-daemon configuration ===
 
+
== Git-daemon configuration ==
+
  
 
Prepare directories and clone portage-mini from github::
 
Prepare directories and clone portage-mini from github::
Line 67: Line 66:
 
<pre>    root@git.lan # /etc/init.d/git-daemon start
 
<pre>    root@git.lan # /etc/init.d/git-daemon start
 
     root@git.lan # rc-update add git-daemon default</pre>
 
     root@git.lan # rc-update add git-daemon default</pre>
== Pull from remote ==
+
=== Pull from remote ===
  
 
Add to /etc/cron.daily/funtoo-sync.sh::
 
Add to /etc/cron.daily/funtoo-sync.sh::
Line 75: Line 74:
 
     cd /home/git-mirrors/portage.git
 
     cd /home/git-mirrors/portage.git
 
     su nobody -s &quot;/bin/sh&quot; -c &quot;git fetch --all&quot;</pre>
 
     su nobody -s &quot;/bin/sh&quot; -c &quot;git fetch --all&quot;</pre>
= Cloning from local git-daemon =
 
  
 +
== Cloning from local git-daemon ==
  
 
Local clone from git.lan::
 
Local clone from git.lan::

Revision as of 17:14, 5 November 2010

Contents

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.

author: Tristan de Cacqueray
contact: tc@gcm-sarl.eu :
copyright: GCM SARL
license: Creative Commons Attribution 3.0 Unported License

Use case

This tutorial will be about hosting a local mirror of funtoo git based portage tree.

Following terms should be adapted

<col width="25%" /> <col width="58%" /> <thead> </thead> <tbody> </tbody>
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 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-2010.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

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"

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