33305ed8e7
(local mkd worked fine... weird!)
88 lines
3.3 KiB
Markdown
88 lines
3.3 KiB
Markdown
# migrating from gitosis to gitolite
|
|
|
|
[TODO: make the migration tool fix up gitweb and daemon control also...]
|
|
|
|
Migrating from gitosis to gitolite is pretty easy, because the basic design is
|
|
the same.
|
|
|
|
Here's how we migrated my work repos:
|
|
|
|
1. login as the `git` user on the server, and get a bash shell prompt
|
|
|
|
2. **disable gitosis** by renaming `/usr/bin/gitosis-serve` to something
|
|
else. This will prevent users from pushing anything while you do the
|
|
backup, migration, etc.
|
|
|
|
3. **edit** `~/.ssh/authorized_keys` and **carefully** remove all the lines
|
|
containing "gitosis-serve", as well as the marker line that says
|
|
"auto-generated by gitosis, DO NOT REMOVE", then save the file. If the
|
|
file did not have any other keys and is now empty, don't worry -- save it
|
|
anyway because gitolite expects the file to be present (even if it is
|
|
empty).
|
|
|
|
4. For added safety, **delete** the post-update hook that gitosis-admin
|
|
installed
|
|
|
|
rm ~/repositories/gitosis-admin.git/hooks/post-update
|
|
|
|
or at least rename it to `.sample` like all the other hooks hanging
|
|
around, or edit it and comment out the line that calls `gitosis-run-hook
|
|
post-update`.
|
|
|
|
If you do not do this, an accidental push to the gitosis-admin repo will
|
|
mess up your `~/.ssh/authorized_keys` file
|
|
|
|
5. take a **backup** of the `~/repositories` directory
|
|
|
|
Now, log off the server and get back to the client:
|
|
|
|
[inst]: http://github.com/sitaramc/gitolite/blob/pu/doc/0-INSTALL.mkd
|
|
|
|
1. follow instructions to install gitolite; see the [install document][inst].
|
|
Make sure that you **don't** change the default path for `$REPO_BASE` if
|
|
you edit the config file!
|
|
|
|
2. **convert** your gitosis config file. Substitute the path for your
|
|
gitosis-admin clone in `$GSAC` below, and similarly the path for your
|
|
gito**lite**-admin clone in `$GLAC`
|
|
|
|
src/conf-convert.pl < $GSAC/gitosis.conf > $GLAC/gitolite.conf
|
|
|
|
Be sure to check the file to make sure it converted correctly
|
|
|
|
3. **copy** the keys from gitosis's keydir (same meanings for GSAC and GLAC)
|
|
|
|
cp $GSAC/keydir/* $GLAC/keydir
|
|
|
|
4. **Important: expand any multi-key files you may have**. [Here][mk]'s an
|
|
explanation of what multi-keys are, how gitosis does them and how gitolite
|
|
does it differently.
|
|
|
|
You can split the keys manually, or use the following code (just
|
|
copy-paste it into your xterm after "cd"-ing to your gitolite-admin repo
|
|
clone):
|
|
|
|
wc -l keydir/*.pub | grep -v total | grep -v -w 1 | while read a b
|
|
do
|
|
i=1
|
|
cat $b|while read l
|
|
do
|
|
echo "$l" > ${b%.pub}@$i.pub
|
|
(( i++ ))
|
|
done
|
|
mv $b $b.done
|
|
done
|
|
|
|
This will split each multi-key file (say "sitaram.pub") into individual
|
|
files called "sitaram@1.pub", "sitaram@2.pub", etc., and rename the
|
|
original to "sitaram.pub.done" so gitolite won't pick it up.
|
|
|
|
At this point you can rename the split parts more appropriately, like
|
|
"sitaram@laptop.pub" and "sitaram@desktop.pub" or whatever. *Please check
|
|
the files to make sure this worked properly*
|
|
|
|
5. Check all your changes to your gitolite-admin clone, commit, and push
|
|
|
|
[mk]: http://github.com/sitaramc/gitolite/blob/pu/doc/3-faq-tips-etc.mkd#multikeys
|
|
|