Предположим ваш персональный репозиторий находится в директории ~/proj. Сначала мы создадим клон репозитория и скажем демону git (git-daemon) что он предназначен быть публичным:
$ git clone --bare ~/proj proj.git
$ touch proj.git/git-daemon-export-ok
Результирующая директория proj.git содержит "пустой" репозиторий git-- это только содержимое директории ".git", без каких либо файлов.
Затем скопируем proj.git на сервер где вы планируете хостить публичный репозиторий. Вы можете использовать scp, rsync, или что нибудь более привычное или удобное.
Это наиболее предпочтительный способ.
Если кто либо администрирует сервер, то они должны сказать вам в какую директорию поместить репозиторий, и что появится URL git://.
Иначе, все что вам нужно сделать это запустить git daemon; он будет слушать порт 9418. По умолчанию, он разрешит доступ в любую директорию которая выглядит как репозиторий git и содержит волшебный файл git-daemon-export-ok. Передача путей директорий как аргументы в git-daemon ограничит экспорт до этих путей.
Вы также можете запустить git-daemon как сервис inetd; просмотрите документацию по git daemon чтобы получить больше подробностей. (Обратите особое внимание на секцию примеров.)
Протокол git дает лучшую производительность и надежность, но на хосте с установленным вебсервером, экспорт http будет проще установить.
Все что вам нужно сделать это положить новый созданный пустой репозиторий git в директорию которая доступна вебсерверу, и скорректировать немного чтобы дать веб клиентам эктра информацию которая им нужна:
$ mv proj.git /home/you/public_html/proj.git
$ cd proj.git
$ git --bare update-server-info
$ chmod a+x hooks/post-update
(Для объяснения последних двух строк, просмотрите git update-server-info и githooks.)
Объявите URL proj.git. Потом любой может склонировать или вытянуть репозиторий, просто выполнив команду:
$ git clone http://yourserver.com/~you/proj.git