Por que recebo um erro de permissão de arquivo do Windows (Erro IO 13) com o Android SDK ao gravar arquivos que começam com um ponto?
-
22-09-2019 - |
Pergunta
Executando o Titanium Appcelerator 0.8.1 em uma máquina virtual Windows XP, com Android SDK 2.1
Ao executar o aplicativo build/install, recebo o seguinte erro (última linha quebrada para exibição aqui):
[TRACE] f = open(os.path.join(dest, dest_file), "w")
[TRACE] IOError: [Errno 13] Permission denied:
'C:\\Documents and Settings\\firstname.surname\\Desktop\\MyApp\\build\\android\\.classpath'
A remoção de .classpath resulta na criação de .classpath, mas o erro simplesmente passa para o próximo arquivo no qual deve ser gravado.
Os arquivos estão em um repositório git, com check-out via msysgit, mas o mesmo erro ocorre quando os arquivos são copiados diretamente do servidor git para a máquina Windows.Infelizmente, o aplicativo de desenvolvimento Titanium não reconstruirá o pacote Android para um aplicativo existente se os arquivos build\Android estiverem faltando, portanto, não é possível simplesmente não verificá-los no git.
Os arquivos parecem ter as permissões corretas - são graváveis pela conta do usuário atual, não têm o sinalizador somente leitura definido (verificado por meio de 'attrib') e definiram as opções de acesso e o proprietário por meio das caixas de diálogo Segurança/Avançado em os arquivos e diretórios (e verificados por um administrador de TI do Windows aqui)
Pelo que sei, nada mais tem o arquivo aberto (uma possível causa do IOError 13).
Qual poderia ser a razão aqui?Git poderia ser o culpado?
Solução
Respondendo à minha própria pergunta caso alguém tenha o mesmo problema:
- removendo a bandeira oculta (com
attrib -H
) corrige o problema de permissão de arquivo.
(o sinalizador Hidden foi definido por msysgit, para corresponder à natureza 'oculta' dos dotfiles no Unix)