Impossível empurrar após configurar o git smart http. Pull and Clone working

1

Estou tentando configurar o git no meu servidor com o http inteligente como o acesso mecanismo. Devido a alguns problemas de integração, não podemos usar nenhum outro mehtod e tem que ser o http ou os métodos https.

Então eu segui um monte de blogs / artigos e consegui pegar a coisa correndo.

No entanto, agora, embora o clone e o pull estejam funcionando, a operação de envio não está funcionando.

Eu compartilhei as configurações relevantes e os logs aqui.

Configs

Virtualhost apache

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /home/fsmk/domains/git.fsmk.org/cgi-bin/git-http-backend/
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

<Directory "/usr/lib/git-core/">
  AllowOverride None
  Options +ExecCGI -Includes
  Order allow,deny
  Allow from all
</Directory>

<LocationMatch "^/git/.*$">
  AuthType Basic
  AuthName "Private Git Repositories on git.fsmk.org"
  AuthUserFile /etc/apache2/conf.d/git.passwd
  Require valid-user
</LocationMatch>

Wrapper Suexec

#!/bin/bash
PATH_INFO=$SCRIPT_URL
export GIT_PROJECT_ROOT=/var/www/
export GIT_HTTP_EXPORT_ALL=true
/usr/lib/git-core/git-http-backend

Erros

Clone

Isso não gera erros. Estes são os logs de acesso do apache.

IP - - [05/Jun/2018:17:55:13 +0000] "GET /git/testrepo.git/info/refs?service=git-upload-pack HTTP/1.1" 401 610 "-" "git/2.17.1"
IP - TESTUSER [05/Jun/2018:17:55:29 +0000] "GET /git/testrepo.git/info/refs?service=git-upload-pack HTTP/1.1" 200 656 "-" "git/2.17.1"
IP - TESTUSER [05/Jun/2018:17:55:30 +0000] "POST /git/testrepo.git/git-upload-pack HTTP/1.1" 200 18662 "-" "git/2.17.1"

Estes são o git clone -v output na minha máquina cliente

Cloning into 'testrepo'&#x2026;
Username for 'http://git.fsmk.org': TESTUSER
Password for 'http://[email protected]': 
Server supports multi<sub>ack</sub><sub>detailed</sub>
Server supports no-done
Server supports side-band-64k
Server supports ofs-delta
Server version is git/2.11.0
want 7c9a3fe7d59991e187ba99ee6e3ecb4fcb68d1be (refs/heads/master)
done
POST git-upload-pack (165 bytes)
remote: Counting objects: 55, done.
remote: Compressing objects: 100% (45/45), done.
remote: Total 55 (delta 6), reused 0 (delta 0)
Unpacking objects: 100% (55/55), done.

Pull

Nenhum erro no log de erros do apache e no log do suexec. Estes são os logs de acesso do apache

IP- - [05/Jun/2018:17:58:29 +0000] "GET /git/testrepo.git/info/refs?service=git-upload-pack HTTP/1.1" 401 610 "-" "git/2.17.1"
IP - TESTUSER [05/Jun/2018:17:58:36 +0000] "GET /git/testrepo.git/info/refs?service=git-upload-pack HTTP/1.1" 200 656 "-" "git/2.17.1"

A saída no cliente local também é comum

Push (é aqui que está o problema)

Não há erro suexec. Estes são os registros de acesso do apache.

IP - - [05/Jun/2018:18:03:51 +0000] "GET /git/testrepo.git/info/refs?service=git-receive-pack HTTP/1.1" 401 610 "-" "git/2.17.1"
IP - TESTUSER [05/Jun/2018:18:03:59 +0000] "GET /git/testrepo.git/info/refs?service=git-receive-pack HTTP/1.1" 200 539 "-" "git/2.17.1"

O processo de push trava após POST line. Esta é a saída de push detalhada no meu cliente

Pushing to <http://git.fsmk.org/git/testrepo.git>
Username for 'http://git.fsmk.org': TESTUSER
Password for 'http://[email protected]': 
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 240 bytes | 240.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
POST git-receive-pack (393 bytes)

(hangs)

Isso é o que os logs de erro do apache mostram após a operação de envio. É statys enforcado indefinidamente.

Estes são os registros de erros do apache

[Tue Jun 05 18:09:00.134148 2018] [cgi:warn] [pid 5586] [client 45.124.158.238:51094] AH01220: Timeout waiting for output from CGI script /home/fsmk/domains/git.fsmk.org/cgi-bin/git-http-backend
[Tue Jun 05 18:09:00.134254 2018] [core:error] [pid 5586] (70007)The timeout specified has expired: [client IP:51094] AH00574: ap<sub>content</sub><sub>length</sub><sub>filter</sub>: apr<sub>bucket</sub><sub>read</sub>() failed

Nota:

A mudança que estou aplicando é mínima. Eu apenas removi um arquivo, confirmei e enviei.

IP nos logs é um espaço reservado para os meus clientes IP addess TESTUSER é o usuário que está sendo autenticado usando o htpasswd

Sistema de Operaão: Debian 9 (servidor), Arch (client)
Versão do Apache: 2.4.5
Git vesion: 2.11.0 (servidor), 2.17.0 (cliente)

Também estamos usando Virutalmin no servidor.

Existe algo que eu esteja sentindo falta deste problema? Por que o push não está funcionando?

Existe uma maneira melhor de exibir um único repositório do git pela Internet usando http / https?

    
por sohom154 05.06.2018 / 20:49

0 respostas