Retiro sua pergunta, de que o webdav para o mesmo usuário funciona como planejado para outros repositórios, portanto o webdav está configurado corretamente.
Para onde http://[email protected]/newproject.git
aponta?
Ele aponta para o repo em /var/lib/git/newproject.git
ou para /var/www
?
Eu posso ver dois possíveis problemas:
- O usuário do httpd precisa de acesso de gravação para todos os arquivos de repo
- O repositório deve ser nu
Acesso de gravação para o usuário do httpd
O servidor da Web tem acesso de gravação a todas as partes do repositório?
Quando você faz push localmente, pode ter criado arquivos com uma conta de usuário (ou raiz) que o servidor da Web não pode gravar agora.
Obviamente, o mesmo se aplica quando o servidor web tenta acessar o repositório em /var/www
.
A melhor opção seria chown -R
de todos os arquivos para o usuário do httpd.
repo nu
O repo de destino é um repositório vazio?
Tecnicamente, não é necessário que o repositório esteja vazio, mas há problemas que podem surgir quando você tem uma cópia de trabalho registrada de um ramo para o qual você está empurrando. Seu problema pode ser um desses problemas.
Veja também como converter um -git-repository-from-normal-to-bare e tudo sobre repos "bare" .
Você deve verificar git status
, git branch
e similar no diretório de destino para problemas.
Se você continuar tendo problemas, outra opção óbvia é clonar o repositório servido, mover o repositório servido para algum outro local, git init --bare
(corrigir permissões ou fazê-lo como usuário httpd) e pressionar novamente.
problema-com-git-remote-refs-heads-master-não-é-um-ancestral-de-local-refs-h é uma pergunta no Stackoverflow sobre a mesma mensagem de erro em uma configuração similar. / p>