Jestem w trakcie konfigurowania serwera Git (1.7.2.3) na maszynie WS 2008 przy użyciu Apache i git-http-backend.exe. Śledziłem dobry tutorial here. Mam pracę GUI, mogę annoymously klon i jeśli mogę umieścić następujące w config z repo mogę annoymously pchania:Konfigurowanie serwera Git w systemie Windows Za pomocą git-http-backend.exe
[http]
receivepack = true
Dodałem następujące do pliku httpd.conf:
SetEnv GIT_PROJECT_ROOT C:/GIT/Repositories
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
"C:/Program Files (x86)/git/libexec/git-core/git-http-backend.exe/$1"
<Directory />
Allow from all
</Directory>
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile C:/GIT/ApacheConfig/users
AuthGroupFile C:/GIT/ApacheConfig/groups
Require group repogeneral
</LocationMatch>
Kiedy dodać „LocationMatch” wciąż mogę sklonować annoymously lub podając nazwę w adresie URL, git clone http://[email protected]
będzie on poprosi o hasło i klonu.
ale gdy próbuję wcisnąć z powrotem do repo otrzymuję następujący:
błąd: nie można uzyskać dostępu do adresu URL http://[email protected]/newtestrepo.git/, kod zwrotny 22 krytyczny: git-http-Push powiodło
czekałem na przykład na http-backend.exe man page, ale nie może ich uruchomić.
tutaj jest złożyć moje grupy, (jest to tylko testowanie przykładów więc nic, które byłyby stosowane w prod):
admin: jon steve admin
webview: jon steve web
repogeneral: jon steve
testrepo: jon admin
testrepo2: jon steve web
tutaj jest plik użytkownicy:
jon:$apr1$kEKVExYx$guIF9oYV8buGhFLZr16XN0
steve:$apr1$jvgjF9nv$PvWsHH.cSOBN5ymk6NT1B0
admin:$apr1$vzXgDskN$oszCei3tkHNUgtLj2HkHF/
web:$apr1$wS0do7hb$VA9tsc9c9LwY5PcjfhdwK0
Wiem nazwa użytkownika jon działa tak, jakbym umieścił wymaganie katalogowe w sekcji gui Mogę się zalogować przy pomocy nazwy użytkownika jon bez problemu (punkty na tym samym pliku użytkownika i grupy, jak robi to lokalizacja).
Nie jestem pewien, jaką konfigurację pominąłem w tym momencie (zakładając, że jest to problem z konfiguracją).
Każda rada dotycząca pokonania tej ostatniej przeszkody byłaby fantastyczna.
EDIT
Gram trochę więcej, a tutaj jest informacja mam:
gdybym sklonować repo z:
git clone http://[email protected]/remotetest.git
mogę repozytorium na zewnątrz, ale kiedy spróbuję i odepchnę z:
git push origin master
zostanę poproszony o hasło, to wprowadź je, a następnie prosi o nią ponownie, a następnie pojawia się następujący błąd:
C: \ temp \ remotetest \ remotetest> git Push głównego pochodzenie Hasło: Hasło : błąd: nie można uzyskać dostępu do adresu URL http://[email protected]/remotetest.git/, kod 22 powrócić krytyczny: git-http-Push udało
W moim dostępu Apache.log uzyskać następujące:
192.168.1.2 - - [29/Sep/2010:21:58:19 +0100] "GET /remotetest.git/info/refs?service=git-upload-pack HTTP/1.1" 200 38
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/info/refs?service=git-receive-pack HTTP/1.1" 403 -
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/info/refs HTTP/1.1" 200 -
192.168.1.2 - - [29/Sep/2010:21:58:51 +0100] "GET /remotetest.git/HEAD HTTP/1.1" 200 23
ciekawe kiedy sklonować z nazwą użytkownika w adresie URL nie ma znaczenia, co hasło umieścić w, nadal będzie ona działać. Zakładam, że to dlatego, że powinienem móc anonimowo działać. Nie wiem, dlaczego w tym momencie prosi o podanie hasła.
widzę też to w błąd kłody:
[Wed Sep 29 22:33:00 2010] [error] [client 192.168.1.2] client denied by server configuration: C:/Program Files (x86)/Git/libexec/git-core/git-http-backend.exe
[Wed Sep 29 22:33:00 2010] [error] [client 192.168.1.2] client denied by server configuration: C:/Program Files (x86)/Git/libexec/git-core/git-http-backend.exe
EDIT 2
Próbowałem odtworzenie pliku haseł, wykonując:
htpasswd -c -m C:/git/apacheconfig/users jon
ale to nie pomogło .
EDIT 3
config PHP w httpd.conf gdzie wykorzystuje plik sami użytkownicy do podstawowej logowania:
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs">
AuthName "GitUsers"
AuthType Basic
AuthUserFile C:/GIT/ApacheConfig/users
AuthGroupFile C:/GIT/ApacheConfig/groups
require group webview
</Directory>
EDIT 4
OK więc mogę dostać klonowanie i pchanie w trybie annoymous na szczęście, ale uwierzytelnianie nie powiedzie się.
C:\temp\test2\temp\test>git push origin master
Password:
Password:
error: Cannot access URL http://[email protected]:8000/repositories/test.git/, return code 22
fatal: git-http-push failed
Zmieniłem httpd.conf aby użyć następujących:
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories"
SetEnv GIT_HTTP_EXPORT_ALL
<Directory "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories">
Options Indexes FollowSymLinks MultiViews Includes ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<LocationMatch "^/repositories/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs/repositories/.htpasswd"
Require valid-user
</LocationMatch>
ScriptAliasMatch \
"(?x)^/repositories/(.*/(HEAD | \
info/refs | \
objects/(info/[^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
"C:/Program Files (x86)/Git/libexec/git-core/git-http-backend/$1"
ErrorLog C:/GIT/error_log
CustomLog C:/GIT/access_log combined
</VirtualHost>
Co ciekawe, kiedy stworzył nowe repo (git startowych --bare newrepo.git) nie stworzyć informacji/plik ref. Musiałem wykonać polecenie "git update-server-info", aby je utworzyć.
logi Apache Access mają coś ciekawego, co mogłoby być wskazówką:
192.168.10.97 - - [05/Oct/2010:22:48:26 +0100] "GET /repositories/test.git/info/refs?service=git-receive-pack HTTP/1.1" 200 -
192.168.10.97 - - [05/Oct/2010:22:48:26 +0100] "GET /repositories/test.git/HEAD HTTP/1.1" 200 23
192.168.10.97 - - [05/Oct/2010:22:48:28 +0100] "PROPFIND /repositories/test.git/ HTTP/1.1" 405 248
To jest, gdy starałem się „push” z powrotem do repo, ale są polecenia i nie GET POST. nie wiem, czym jest PROPFIND, nie znalazłem jeszcze wiele informacji na ten temat. Myślę (czytając), że może być coś w rodzaju przepisywania, które zmienia POST na GET i zabicie go, czy coś w tym stylu. W tej chwili jestem jednak nie na miejscu.
Dzięki
Nie jestem pewien, dlaczego „' htdocs'”wchodzi na scenę w perspektywie' Directory'definition. – VonC
to domyślna lokalizacja Apache do obsługi plików z. Używam PHP gui do wyświetlania repozytoriów, używa tego samego pliku authuser i daje popup login i działa z tą samą nazwą użytkownika i hasłem. użycie go jako testu, aby upewnić się, że Apache może zrozumieć plik haseł użytkowników. – Jon
To pytanie powinno znajdować się na stronie http://serverfault.com/, ponieważ zajmuje się mniej programowaniem, a więcej konfiguracją i ustawianiem, nie? –