erro de permissões de index.lock - .git de propriedade de root, árvore de trabalho de propriedade de outro usuário

1

No meu servidor, eu tenho um repositório git cobrindo um diretório para ser legível pela web. O conteúdo do diretório www deste usuário em particular será legível e gravável por esse usuário, mas eu quero que o diretório .git seja de propriedade de root.

Existe alguma maneira de tornar o diretório .git suficientemente legível para que o usuário não-root possa fazer o check-out de arquivos como um meio simples de reverter? Adicionar e confirmar não são permitidos (somente o administrador realmente marca as alterações como "aceitas", o que pode resultar na sua promoção de teste), mas, em teoria, deve ser possível para um usuário não privilegiado ler .git e alterar arquivos em www . Comandos como git log e git show não apresentam problemas nessa configuração, mas a tentativa de um checkout falha:

$ git checkout www/some-file-name
fatal: Unable to create '/REDACTED/PATH/.git/index.lock': Permission denied

Posso pedir ao git para não bloquear o índice? Posso de alguma forma permitir que o índice seja bloqueado sem abrir muito mais? (Obviamente, não posso tornar o diretório .git gravável, pois isso perderia toda a proteção.)

NOTA: É possível contornar isso para um único arquivo de cada vez:

$ git show HEAD:www/some-file-name >www/some-file-name

Portanto, claramente não é uma limitação fundamental. Talvez seja só que git checkout assume que está fazendo um switch de ramificação? É a maneira mais conveniente de gerenciar curingas e árvores de diretórios.

EDIT: Isso não está falando de um comutador de ramificação. Eu quero poder usar git checkout para verificar um arquivo único . É por isso que a resposta óbvia não é aplicável aqui.

    
por rosuav 17.02.2017 / 18:20

1 resposta

1

O que você pergunta é contraditório. Para executar git checkout em um repositório, o usuário precisa ter acesso de gravação à pasta .git .

Você pode rastrear seu projeto um nível acima da webroot, para que ele não seja acessível pelo servidor da web.

Caso contrário, você pode clonar o repo em outro lugar e link simbólico apenas o que é necessário para o webroot

    
por 17.02.2017 / 20:37

Tags