Implantação do site principal / hub do Git: documentroot changes save fine, mas permissão negada para subdiretórios

1

Seguindo as instruções em um fluxo de trabalho Git focado na web , eu configurei um repositório de hub no meu servidor da Web e, em seguida, clonou o hub em minha máquina em casa.

Eu comecei testando commits e push com arquivos alterados no documentroot e as mudanças apareceriam bem na raiz do servidor web. No entanto, quando tentei enviar um arquivo em um subdiretório, gravei a seguinte mensagem:

remote:
remote: **** Pulling changes into Prime [Hub's post-update hook]
remote:
remote: From /home/git/site_hub
remote:  * branch            master     -> FETCH_HEAD
remote: error: unable to create file academy/testthegit2.html (Permission denied)

Mais uma vez, não há problemas de permissão na raiz da Web, mas coloque um arquivo em um subdiretório e um erro é lançado.

O usuário git está no grupo apache e os subdiretórios são chmod 755.

Aqui está a pós-atualização do hub:

#!/bin/sh

echo
echo "**** Pulling changes into Prime [Hub's post-update hook]"
echo

cd /usr/local/apache/htdocs || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

e o principal (pós-atualização do document root):

#!/bin/sh

echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echo

git push hub

Para reiterar, funciona na raiz, falha no subdiretório.

Obrigado por qualquer conselho.

    
por Ian 12.04.2013 / 16:09

1 resposta

1

Você precisa adicionar um wrapper para corrigir as permissões no seu gancho de pós-atualização. Dependendo de como é a configuração do seu servidor, envolve etapas diferentes. Vou descrever meu caso de uso e espero que você possa adaptá-lo às suas necessidades.

No meu servidor, os repositórios nus (hubs) são gerenciados pelo usuário gitosis / gitolite / plain git com git-shell. Arquivos sob $GITOSIS_HOME são de propriedade de gitosis:gitosis e são duplicados 077 .

Para que as alterações sejam feitas corretamente, precisei adicionar uma chamada a um script auxiliar que estou armazenando em /usr/local/bin que recursivamente define proprietário, grupo, permissões e contexto do SELinux no repositório prime / live.

A propósito, também precisei adicionar uma linha ao meu arquivo sudoers(5) para permitir que gitosis executasse o script como raiz com !requiretty e NOPASSWD .

    
por 12.04.2013 / 19:26