Difference between revisions of "Portage Git Mirror"
Jump to navigation
Jump to search
(5 intermediate revisions by the same user not shown) | |||
Line 37: | Line 37: | ||
Prepare directories and clone portage-mini from github:: | Prepare directories and clone portage-mini from github:: | ||
< | <console> | ||
###i## mkdir /home/git-mirrors | |||
###i## chown nobody /home/git-mirrors | |||
###i## su -s /bin/sh nobody | |||
$##bl## cd /home/git-mirrors | |||
$##bl## git clone --mirror --bare git://github.com/funtoo/portage-2012.git portage.git | |||
</ | </console> | ||
Configure git-daemon in | Configure git-daemon in <code>/etc/conf.d/git-daemon</code>: | ||
< | <console> | ||
###i## nano /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" | ||
</console> | |||
Start | Start the daemon: | ||
< | <console> | ||
root@git.lan###i## /etc/init.d/git-daemon start | |||
root@git.lan###i## rc-update add git-daemon default | |||
</ | </console> | ||
=== Pull from remote === | === Pull from remote === | ||
Add to /etc/cron.daily/funtoo-sync.sh: | Add the following to <code>/etc/cron.daily/funtoo-sync.sh</code>: | ||
<console> | |||
< | ###i## nano /etc/cron.daily/funtoo-sync.sh | ||
#!/bin/sh | |||
cd /home/git-mirrors/portage.git | |||
su nobody -s "/bin/sh" -c "git fetch --all" | |||
</console> | |||
== Cloning from local git-daemon == | == Cloning from local git-daemon == | ||
Local clone from git.lan:: | Local clone from <code>git.lan</code>: | ||
<console> | |||
###i## mv /usr/portage /usr/portage.old | |||
###i## git clone git://git.lan/portage.git /usr/portage | |||
###i## cd /usr/portage | |||
###i## git checkout funtoo.org | |||
</console> | |||
[[Category:HOWTO]] | [[Category:HOWTO]] |
Revision as of 00:14, January 14, 2014
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
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 # mkdir /home/git-mirrors root # chown nobody /home/git-mirrors root # su -s /bin/sh nobody user $ cd /home/git-mirrors user $ git clone --mirror --bare git://github.com/funtoo/portage-2012.git portage.git
Configure git-daemon in /etc/conf.d/git-daemon
:
root # nano /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 the daemon:
root@git.lan# /etc/init.d/git-daemon start root@git.lan# rc-update add git-daemon default
Pull from remote
Add the following to /etc/cron.daily/funtoo-sync.sh
:
root # nano /etc/cron.daily/funtoo-sync.sh root #!/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 # mv /usr/portage /usr/portage.old root # git clone git://git.lan/portage.git /usr/portage root # cd /usr/portage root # git checkout funtoo.org