Como posso criar arquivos que faço check-out com o git no Windows gravável por padrão no Cygwin?

2

Estou desenvolvendo no Windows e prefiro executar o git e criar comandos a partir da linha de comando do Windows, mas também gosto de usar o cygwin quando quero apenas explorar o repositório do projeto usando minhas ferramentas Unix favoritas.

O problema que tenho é que sempre que eu faço qualquer tipo de checkout git, os arquivos que ele faz check-out são somente leitura da perspectiva do cygwin. Eu posso consertar isso facilmente com um chmod recursivo, mas eu não quero ter que fazer isso depois de cada checkout git. Observe que, se eu editar esses mesmos arquivos usando qualquer programa do Windows, eles serão graváveis - apenas o cygwin os verá como somente leitura.

Não tenho certeza se posso adicionar um git hook, porque como eu disse, estou executando o git checkout na linha de comando do Windows.

Acho que estou confuso sobre a interação entre as permissões do Windows e as permissões do cygwin.

    
por dmazzoni 03.08.2012 / 19:45

1 resposta

3

Sem gastar algum tempo com as várias permissões de arquivo do Windows, é difícil dizer exatamente o que está errado.

Felizmente, não preciso saber disso. A solução simples para resolver todos os problemas de permissão de arquivo é usar a opção noacl para todas as montagens do Cygwin.

Abra /etc/fstab em seu editor de texto favorito do Cygwin (ou, normalmente, C:\cygwin\etc\fstab no seu Windows favorito, desde que ele ofereça suporte a terminações de linha do Unix [portanto, não o Notepad]). O meu anteriormente parecia assim:

# For a description of the file format, see the Users Guide
# http://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:
# none /cygdrive cygdrive binary,posix=0,user 0 0

Se a última linha ainda estiver comentado, exclua o primeiro para que o sistema preste atenção. Pode não ser comentado, caso em que não haverá para excluir.

Em seguida, para a lista de opções (que é o binary,posix=0,user bit), adicione ,noacl ao final. A linha relevante no meu /etc/fstab se pareceu com a seguinte:

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

Em seguida, feche e reabra todos os seus aplicativos do Cygwin (talvez seja necessário reinicializar), e você deverá parar de ver qualquer problema de permissão.

Observe que, se você tiver feito coisas complicadas com seus pontos de montagem, talvez seja necessário editar várias linhas em /etc/fstab , bem como quaisquer arquivos acumulados em /etc/fstab.d . As mudanças que você precisará fazer serão as mesmas para todas elas.

A opção noacl resultará no Cygwin ignorando completamente todas as listas de controle de acesso NTFS. Ele ainda vai olhar para o atributo somente leitura do DOS, mas isso não está ligado a nenhum usuário. Isso significa que ele não será capaz de dizer se um arquivo é baseado em permissões executáveis; em vez disso, supõe-se que qualquer arquivo que termine .bat , .com ou .exe seja executável, assim como qualquer arquivo que comece com #! .

Mais informações, se estiver interessado, no Guia do usuário do Cygwin:

por 07.08.2012 / 10:22