Есть shared-хостинг с достаточно большим объёмом свободного места. Сильно захотелось расположить там git-репозиторий. И оказывается, это возможно!
Требуется хостинг с ОС Unix, доступ к файлам сайта, а также наличие разрешения выполнения cgi-скриптов.
Закачиваем на хостинг файлы git. Обратите внимание, что версии glib должны совпадать у выбранного вами пакета и библиотекой на сервере, иначе получите ошибку типа
/lib/libc.so.6: version `GLIBC_2.7' not found
Для моего хостинга подошёл вот этот архив: http://pkgs.org/download/centos-5-rhel-5/rpmforge-i386/git-1.7.5.4-1.el5.rf.i386.rpm.html (прямая ссылка: http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/git-1.7.5.4-1.el5.rf.i386.rpm).
Скачиваем, распаковываем:
$ rpm2cpio git-1.7.5.4-1.el5.rf.i386.rpm | cpio -idmv
И закачиваем распакованное содержимое (интересуют нас только usr/bin и usr/libexec) на сайт, скажем, в каталог git-bin, получаем следующую структуру домашнего каталога сайта:
/home/your-site-home/ /home/your-site-home/git-bin/ /home/your-site-home/git-bin/bin/ /home/your-site-home/git-bin/bin/<файлы git> /home/your-site-home/git-bin/libexec/ /home/your-site-home/git-bin/libexec/git-core/ /home/your-site-home/git-bin/libexec/git-core/<файлы git>
Создаём каталог для репозиториев, скажем /home/your-site-home/repos.
Далее создаём скрипт-посредник для исполнения:
#!/bin/sh exec 2>&1 HOME=/home/your-site-home export GIT_PROJECT_ROOT=$HOME/repos export GIT_HTTP_EXPORT_ALL=1 [ -z "$REMOTE_USER" ] && export REMOTE_USER=$REDIRECT_REMOTE_USER exec $HOME/git-bin/libexec/git-core/git-http-backend
Кладём этот скрипт (назовём его git.cgi) в каталог cgi-скриптов (cgi-bin).
После этого уже можно забирать репозитории (конечно, в каталоге repos уже должен быть bare-репозиторий foo.git) по указанию адреса на подобии http://your-site.tdl/cgi-bin/git.cgi/foo.git
Для того, чтобы заработал push, необходимо добавить на сайт basic-авторизацию (чтобы скрипт получал переменную $REMOTE_USER), либо поковырять настройки репозитория.
Первичный источник: git on shared hosting with git-http-backend
Источник рабочего примера: git-http-backend on shared hosting, with push
Дискуссия