usar tag remote how hacer drop delete create como git apache git-http-backend

remote - how to delete tag git



git-http-backend (2)

Intenta cambiar

ScriptAlias / /usr/lib/git-core/git-http-backend/

a una coincidencia más inteligente que solo dirige las solicitudes de git a git-http-backend:

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))$" / /usr/lib/git-core/git-http-backend/

Traté de configurar un servidor de git con git-http-backend y todo funciona como yo quiero, pero hay una pequeña cosa.

La configuración

<VirtualHost *:80> ServerName git.server.com SetEnv GIT_PROJECT_ROOT /srv/git SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER ScriptAlias /git /usr/lib/git-core/git-http-backend/ <Directory "/usr/lib/git-core*"> Options ExecCGI Indexes Order allow,deny Allow from all </Directory> <LocationMatch "^/git/repos/git-receive-pack$"> AuthType Digest AuthName "Git Repositories" AuthUserFile /srv/git/.git-auth-file AuthGroupFile /srv/git/.git-group-file Require valid-user </LocationMatch> </VirtualHost>

Esto permite que todos lean los repos, pero solo los usuarios válidos para escribir. Lo que me molesta es que la url es http://git.server.com/git/repos . Me gustaría deshacerme del git en la URL como http://git.server.com/repos . Cuando cambio la configuración a

<VirtualHost *:80> ServerName git.server.com SetEnv GIT_PROJECT_ROOT /srv/git SetEnv GIT_HTTP_EXPORT_ALL SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER ScriptAlias / /usr/lib/git-core/git-http-backend/ <Directory "/usr/lib/git-core*"> Options ExecCGI Indexes Order allow,deny Allow from all </Directory> <LocationMatch "^/repos/git-receive-pack$"> AuthType Digest AuthName "Git Repositories" AuthUserFile /srv/git/.git-auth-file AuthGroupFile /srv/git/.git-group-file Require valid-user </LocationMatch> </VirtualHost>

La autenticación falla. Todavía puedo leer los repos, pero falla el git push . No pude entender por qué sucede esto.

* About to connect() to git.server.com port 80 (#0) * Trying MYIP... * Connected to git.server.com (MYIP) port 80 (#0) > GET /iocaste/info/refs?service=git-receive-pack HTTP/1.1 User-Agent: git/1.7.6 Host: git.server.com Accept: */* Pragma: no-cache < HTTP/1.1 200 OK < Date: Sun, 28 Aug 2011 18:17:27 GMT < Server: Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/1.0.0d DAV/2 PHP/5.3.8 with Suhosin-Patch SVN/1.6.17 < Expires: Fri, 01 Jan 1980 00:00:00 GMT < Pragma: no-cache < Cache-Control: no-cache, max-age=0, must-revalidate < Transfer-Encoding: chunked < Content-Type: application/x-git-receive-pack-advertisement < * Connection #0 to host git.server.com left intact Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 257 bytes, done. Total 3 (delta 0), reused 0 (delta 0) * About to connect() to git.server.com port 80 (#0) * Trying MYIP... * connected * Connected to git.server.com (MYIP) port 80 (#0) > POST /iocaste/git-receive-pack HTTP/1.1 User-Agent: git/1.7.6 Host: git.server.com Accept-Encoding: deflate, gzip Content-Type: application/x-git-receive-pack-request Accept: application/x-git-receive-pack-result Content-Length: 393 * The requested URL returned error: 404 * Closing connection #0 error: RPC failed; result=22, HTTP code = 404 fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly

¿Alguien puede ayudarme a entender por qué falla este último? Supongo que debe ser que ScriptAlias ​​se active durante la autenticación.

EDITAR 1 El registro de Apache no me dio mucha información. Solo que la autenticación falla por alguna razón.

El access_log dice:

MYIP - - [29/Aug/2011:19:03:18 +0200] "GET /repos/info/refs?service=git-receive-pack HTTP/1.1" 200 153 MYIP - - [29/Aug/2011:19:03:18 +0200] "POST /repos/git-receive-pack HTTP/1.1" 404 -

y el error_log dice:

[Mon Aug 29 19:03:18 2011] [error] [client MYIP] Request not supported: ''/srv/git/error/HTTP_UNAUTHORIZED.html.var''


No tengo una respuesta de fuego 100% segura, pero consulte mi pregunta sobre GIT aquí, Configuración de Git Server en Windows con git-http-backend.exe .

Mi ubicaciónMatch es un poco diferente, pero no por mucho:

<LocationMatch "^/repositories/.*/git-upload-pack$"> Options +ExecCGI AuthType Basic AuthName intranet AuthUserFile "C:/GIT/Apache/config/users" AuthGroupFile "C:/GIT/Apache/config/groups" Require group committers </LocationMatch>

La url que usaría sería myserver.com/repositories/mytest.git

Espero que esto ayude.