Я хотел бы настроить сервер Git, используя Подход "Smart-HTTP". Однако мне трудно заставить его работать в Windows, и я новичок в Apache. Мой httpd.conf, в частности:
SetEnv GIT_PROJECT_ROOT "d:/repositories"
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Program Files/Git/libexec/git-core/git-http-backend.exe"
<VirtualHost 172.16.0.5:80>
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
Require group committers
</LocationMatch>
</VirtualHost>
Может ли кто-нибудь предоставить инструкции по настройке сервера Git с использованием git-http-backend в Windows?
Есть несколько небольших деталей, чтобы заставить это работать в Windows, но мне удалось это сделать со следующей конфигурацией:
SetEnv GIT_PROJECT_ROOT d:/Export/GIT/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ "C:/Progra~1/Git/libexec/git-core/git-http-backend.exe/"
<Directory "C:/Program Files/Git/libexec/git-core/">
Options +ExecCGI
Allow From All
</Directory>
Я настоятельно рекомендую посмотреть журналы apache и средство просмотра событий, чтобы узнать, что не так.
Например,
libiconv.dll
не найти. В Windows файлы DLL должны существовать в $PATH
, или в той же папке, что и .exe
файл. Самое простое решение - скопировать файл.ExecCGI
вариант).Теперь, чтобы продолжить отладку, вот несколько советов.
Самый простой способ отслеживать журналы apache - открыть оболочку «Git bash» и выполнить следующую команду:
tail -f /c/Program\ Files/Apache\ Software\ Foundation/Apache2.2/logs/{access,error}.log &
Вы можете ввести эту команду и путь, используя завершение TAB, и нажать 2 раза TAB, чтобы получить список предложений. В &
в конце превращает его в фоновый процесс. Каждый раз, когда вы делаете запрос или перезапускаете apache, новые строки журнала будут прокручиваться на вашем экране.
В tail
процесс можно остановить, используя:
jobs # See the background jobs
kill %1 # Kill the specific process
или:
fg # Bring the first job in the foreground
Ctrl+C # Kill the foreground process
Не пытайтесь открыть URL-адрес git в своем браузере, это не сработает. Вместо этого в той же оболочке GIT Bash запустите git clone
команда. например.:
git clone http://localhost/git/somefolder.git
... и вы увидите, как прокручиваются журналы, указывая, где что-то пошло не так.
Поскольку git-http-backend
не предоставляет интерфейс HTML, я искренне рекомендую gitphp для этого (обратите внимание, что есть несколько проектов, которые называются почти одинаковыми). Его легко настроить и создать с учетом поддержки msysGit. Это должно дать вам удобный веб-интерфейс для просмотра всех доступных репозиториев.
У меня возникают проблемы с пробелами в папке git, их лучше избегать.
Для клонирования URL-адреса HTTP требуется как минимум msysGit 1.7.1, если вы хотите запоминать пароли. Пароли можно хранить в _netrc
файл в папке вашего профиля (%USERPROFILE%
) со следующим макетом:
machine git.mydomain.com login MyAccount password MyPassword
В качестве альтернативы вы можете указать учетные данные в URL-адресе клона, но это сломает подмодули.
Сноска: если ваш сервер также поддерживает IIS 7 и .NET 4, вы также можете посмотреть http://www.jeremyskinner.co.uk/2010/06/25/hosting-a-git-server-under-iis7-on-windows/ или http://github.com/yysun/Git-Web-Access Эти проекты предоставляют HTTP-бэкэнд для Git на основе .NET. Я не смог использовать эти инструменты, потому что на сервере все еще работает Windows 2003.
<comment_to_the_question>
Мне трудно заставить его работать в Windows
Вы также должны приложить журналы apache
и git
, версия git
чтобы упростить отслеживание проблемы.
</comment_to_the_question>
На первый взгляд, конфигурационный файл мне подходит. Попробуйте удалить требование аутентификации и сначала проверьте без него.