Difference between revisions of "Portage Git Mirror"
From Funtoo Linux
| (8 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
| − | + | =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 == | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | = 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. | ||
| Line 13: | Line 9: | ||
Following terms should be adapted | Following terms should be adapted | ||
| − | + | <table border="1"> | |
| − | <table | + | |
| − | + | ||
| − | + | ||
| − | + | ||
<tr class="header"> | <tr class="header"> | ||
<th align="left">Terms</th> | <th align="left">Terms</th> | ||
| − | <th align="left"> | + | <th align="left">Definition</th> |
</tr> | </tr> | ||
| − | |||
| − | |||
<tr class="odd"> | <tr class="odd"> | ||
<td align="left">git.lan</td> | <td align="left">git.lan</td> | ||
| Line 40: | Line 30: | ||
<td align="left">Base path of git-daemon</td> | <td align="left">Base path of git-daemon</td> | ||
</tr> | </tr> | ||
| − | |||
</table> | </table> | ||
| + | == Local mirror == | ||
| − | = | + | === Git-daemon configuration === |
| − | + | ||
| − | == Git-daemon configuration == | + | |
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 # 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 | + | nobody $ git clone --mirror --bare git://github.com/funtoo/portage-mini-2011.git portage.git |
| − | git://github.com/funtoo/portage-mini- | + | </pre> |
Configure git-daemon in ''/etc/conf.d/git-daemon'':: | Configure git-daemon in ''/etc/conf.d/git-daemon'':: | ||
| − | + | <pre> | |
| − | <pre> | + | GITDAEMON_OPTS="--syslog --verbose --enable=receive-pack --export-all" |
| − | GITDAEMON_OPTS="${GITDAEMON_OPTS} --base-path=/home/git-mirrors | + | GITDAEMON_OPTS="${GITDAEMON_OPTS} --base-path=/home/git-mirrors /home/git-mirrors" |
| − | /home/git-mirrors" GIT_USER="nobody" GIT_GROUP="nobody" | + | GIT_USER="nobody" |
| + | GIT_GROUP="nobody" | ||
| + | </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> | ||
| − | + | === 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 67: | ||
cd /home/git-mirrors/portage.git | cd /home/git-mirrors/portage.git | ||
su nobody -s "/bin/sh" -c "git fetch --all"</pre> | su nobody -s "/bin/sh" -c "git fetch --all"</pre> | ||
| − | |||
| + | == Cloning from local git-daemon == | ||
Local clone from git.lan:: | Local clone from git.lan:: | ||
| Line 84: | 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