|
|
| Line 1: |
Line 1: |
| − | =========================== Setting up local git mirror ===========================
| + | hi |
| − | | + | |
| − | :keywords: linux, funtoo, git, mirror :description:
| + | |
| − | | + | |
| − | This tutorial explain how to save bandwidth when several local computers need to pull updates from a single remote git repository.
| + | |
| − | | + | |
| − | :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 =
| + | |
| − | | + | |
| − | This tutorial will be about hosting a local mirror of funtoo git based portage tree.
| + | |
| − | | + | |
| − | Following terms should be adapted
| + | |
| − | | + | |
| − | <table>
| + | |
| − | <col width="25%" />
| + | |
| − | <col width="58%" />
| + | |
| − | <thead>
| + | |
| − | <tr class="header">
| + | |
| − | <th align="left">Terms</th>
| + | |
| − | <th align="left">| Definition</th>
| + | |
| − | </tr>
| + | |
| − | </thead>
| + | |
| − | <tbody>
| + | |
| − | <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>
| + | |
| − | </tbody>
| + | |
| − | </table>
| + | |
| − | | + | |
| − | = Local mirror =
| + | |
| − | | + | |
| − | == Git-daemon configuration ==
| + | |
| − | | + | |
| − | Prepare directories and clone portage-mini from github::
| + | |
| − | | + | |
| − | <pre> 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</pre>
| + | |
| − | git://github.com/funtoo/portage-mini-2010.git portage.git
| + | |
| − | | + | |
| − | Configure git-daemon in ''/etc/conf.d/git-daemon''::
| + | |
| − | | + | |
| − | <pre> GITDAEMON_OPTS="--syslog --verbose --enable=receive-pack --export-all"
| + | |
| − | GITDAEMON_OPTS="${GITDAEMON_OPTS} --base-path=/home/git-mirrors</pre>
| + | |
| − | /home/git-mirrors" GIT_USER="nobody" GIT_GROUP="nobody"
| + | |
| − | | + | |
| − | Start Daemon::
| + | |
| − | | + | |
| − | <pre> root@git.lan # /etc/init.d/git-daemon start
| + | |
| − | root@git.lan # rc-update add git-daemon default</pre>
| + | |
| − | == Pull from remote ==
| + | |
| − | | + | |
| − | Add to /etc/cron.daily/funtoo-sync.sh::
| + | |
| − | | + | |
| − | <pre> #!/bin/sh
| + | |
| − | | + | |
| − | cd /home/git-mirrors/portage.git
| + | |
| − | su nobody -s "/bin/sh" -c "git fetch --all"</pre>
| + | |
| − | = Cloning from local git-daemon =
| + | |
| − | | + | |
| − | Local clone from git.lan::
| + | |
| − | | + | |
| − | <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>
| + | |