Difference between revisions of "Portage Git Mirror"
From Funtoo Linux
(Replaced content with "hi") |
|||
| Line 1: | Line 1: | ||
| − | + | =========================== Setting up local git mirror =========================== | |
| + | |||
| + | :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> | ||
Revision as of 17:12, 5 November 2010
Contents |
===================== Setting up local git mirror =====================
- 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
| 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