Eu tenho um check-out do Git. Todas as permissões de arquivo são diferentes do que o git pensa que deveria ser, portanto, todas aparecem como modificadas.
Sem tocar no conteúdo dos arquivos (apenas quero modificar as permissões), como defino todas as permissões de arquivos para o que o git pensa que elas devem ser?
git
file
file-permissions
Dale Forester
fonte
fonte
Respostas:
O Git controla a permissão de arquivo e expõe as alterações de permissão ao criar patches usando
git diff -p
. Então, tudo o que precisamos é:Como uma linha:
você também pode adicioná-lo como um alias à sua configuração do git ...
... e você pode invocá-lo via:
Observe que, se você
bash
usar o shell , use aspas ao'
invés de"
aspas!git
, caso contrário ele será substituído pelo últimogit
comando que você executou.Agradecemos ao @Mixologic por apontar que, simplesmente usando
-R
ongit diff
, osed
comando complicado não é mais necessário.fonte
fatal: unrecognized input
Experimentar
git config core.fileMode false
Na
git config
página do manual:fonte
git checkout origin/master
defina permissões de arquivo confirmadas no servidor para minha cópia de trabalho local? Porque sempre que eu construo a V8 para ArangoDB, as permissões de arquivo são alteradas para que o acesso seja negado a toda a pasta de compilação (mesmo com direitos elevados; Windows 7 ou superior). Preciso corrigir todas as permissões de arquivo local antes de poder continuar o processo de compilação.core.filemode false
Também pode consertar isso? Eu suspeito que o git defina as permissões do Linux na minha máquina Windows. Os scripts de construção só poderia preservá-los e aplicar as mesmas permissões para arquivos recém-criados ...filemode
afalse
!O Git não armazena permissões de arquivo além de scripts executáveis. Considere usar algo como git-cache-meta para salvar a propriedade e as permissões do arquivo.
O Git pode armazenar apenas dois tipos de modos: 755 (executável) e 644 (não executável). Se seu arquivo fosse 444, o git armazenaria ele tem 644.
fonte
umask
, além de uma configuração, consulte stackoverflow.com/a/12735291/125150 ....a mode of 100644, which means it’s a normal file. Other options are 100755, which means it’s an executable file; and 120000, which specifies a symbolic link. The mode is taken from normal UNIX modes but is much less flexible — these three modes are the only ones that are valid for files (blobs) in Git (although other modes are used for directories and submodules).
funcionará na maioria dos casos, mas se você possui ferramentas diff externas como o meld instalado, é necessário adicionar --no-ext-diff
era necessário na minha situação
fonte
Você também pode tentar um gancho de pagamento antes / depois da finalização da compra.
Consulte: Personalizando Git - Git Hooks
fonte
Eu uso o git da cygwin no Windows, a
git apply
solução não funciona para mim. Aqui está minha solução, executechmod
todos os arquivos para redefinir suas permissões.fonte
git diff -p
usado na resposta de muhqu pode não mostrar todas as discrepâncias.core.filemode
forfalse
(que é o padrão para o MSysGit)Este código lê diretamente os metadados:
Um one-liner sem grau de produção (substitui totalmente as máscaras):
(O crédito para "$ '\ 0'" vai para http://transnum.blogspot.ru/2008/11/bashs-read-built-in-supports-0-as.html )
fonte
A coisa mais fácil a fazer é apenas alterar as permissões novamente. Como o @kroger observou, o git apenas rastreia os bits executáveis. Então você provavelmente só precisa correr
chmod -x filename
para corrigi-lo (ou+x
se é isso que é necessário.fonte
git show
: diff --git a / OpenWatch / src / org / ale / OpenWatch / fb / FBUtils.java b / OpenWatch / src / org / ale / OpenWatch / fb / index FBUtils.java cd6fa6a..e5b0935 100644 Isso bit em negrito, existem as permissões de arquivo.100644
para100755
. Eu não acho que você mereça um voto negativo; Git deve ser votado negativamente. É tão quebrado em tantas maneiras em tantos níveis diferentes ...A
etckeeper
ferramenta pode manipular permissões e com:Você pode usá-lo para outros diretórios diferentes
/etc
.Instale usando o gerenciador de pacotes ou obtenha fontes do link acima.
fonte