===================================== Gitolite administration instructions: ===================================== .. contents:: Installation: ============= * Create git user, configure its environment - including ${HOME}/bin * As git user: ``git clone git://github.com/sitaramc/gitolite`` * ``gitolite/install --to ${HOME}/bin`` * Copy admin's ssh key to system as ${user}.pub, then as git, execute: ``gitolite setup -pk ${key}`` * From the host where the private key is: :: $ ssh git@wal1155 info hello dkoleary, this is git@walsinfmgmt1155 running gitolite3 v3.6.2-20-g78fc240 on git 1.7.1 R W gitolite-admin R W testing * Clone the gitolite-admin repo, then configure additional users/repos as needed. Configuration: =============== * Clone the gitolite-admin repo: :: $ git clone git@wal1155:gitolite-admin ./wal1155-gitolite-admin Initialized empty Git repository in /ignite/dkoleary/mpi_git/wal1155-gitolite-admin/.git/ remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 6 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6/6), done. * Copy any/all required keys to keydir in the newly cloned local repo * ``cp nap1151-gitolite-admin/keydir/* wal1155-gitolite-admin/keydir`` * ``cd wal1155; git add -A && git commit -am'new keys'`` * ``git push`` * If not doing mirroring, configure and/or migrate private/public repos as needed. Mirroring: ========== * Uncomment/Update HOSTNAME parameter in ~git/.gitolite.rc file. HOSTNAME doesn't have to be the host name but does have to be unique. Once done, compile. :: $ grep HOSTNAME .gitolite.rc | grep -v '#' HOSTNAME => "wal1155", $ gitolite compile * Update ssh environment: * On new mirror, create a null passphrased default key: :: $ ssh-keygen -t dsa -P "" Generating public/private dsa key pair. Enter file in which to save the key (/home/git/.ssh/id_dsa): Your identification has been saved in /home/git/.ssh/id_dsa. Your public key has been saved in /home/git/.ssh/id_dsa.pub. [[snip]] * Copy newly created id_[rd]sa.pub to gitolite-admin repos in the keydir directory. Resulting filename should be server-${HOSTNAME} as defined aabove. Add/commit/push * Create ssh aliases using the hostnames as defined in ~git/.gitolite.rc: :: loglevel=error host nap1151 hostname napsinfmgmt1151 user git ForwardX11 no host nap1152 hostname napsinfmgmt1152 user git ForwardX11 no host wal1155 hostname walsinfmgmt1155 user git ForwardX11 no * Verify ``ssh ${gitsvr} info`` works from all hosts to all hosts. :: $ ssh nap1151 info hello server-wal1155, this is git@napsinfmgmt1151 running gitolite3 v3.6.2-4-g2471e18 on git 1.7.1 C private/CREATOR/..* * Enable/configure mirroring: * On each node, * edit ~git/.gitlote.rc. Uncomment 'Mirroring' line on/about line 144. * Execute ``gitolite compile`` as the git user * In gitolite master (nap1151) repo, config directory, update mirroring to relfect the new system: :: cd ${mpigit}/nap1151-gitolite-admin/conf repo root/scripts RW+ = @admins RW+ = @san option mirror.master = nap1151 option mirror.slaves = nap1152 wal1155 option mirror.redirectOK = all git commit/push * In the new slave (wal1155 in this case) gitolite-admin repo, update the config to reflect mirroring: :: git clone git@wal1155:gitolite-admin ./wal1155-gitolite-admin cd wal1155-gitolite-admin/conf repo root/scripts RW+ = @admins RW+ = @san option mirror.master = nap1151 option mirror.slaves = nap1152 wal1155 option mirror.redirectOK = all git commit/push * Repull the newly mirrored gitolite-admin repo. If it's not mirrored, log into git@nap1151 and execute: :: gitolite mirror push ${server} gitolite-admin * Push the other mirrored repos to the new slave. Access git@nap1151 then: :: cd .gitolite/conf for d in $(grep ^repo gitolite.conf | awk '{print $NF}' | \ grep -vi private) do echo ${d} gitolite mirror push wal1155 ${d} done