Como fazer commits limpos com o etckeeper?

3

Eu gostaria de fazer commits limpos com o etckeeper. Aqui está o que acontece:

1) Verifique o status do repositório:

git status

On branch master
nothing to commit, working directory clean

2) Modifique um arquivo de configuração:

vi myfile.conf

3) Adicione ao índice

git add myfile.conf

4) Faça um commit

git commit -m"Add this ... to myfile.conf"

5) Observe o commit:

git log -p -1

[...]
 maybe chmod 0644 'magic.mime'
-maybe chmod 0644 'mail.rc'
 maybe chmod 0644 'mailcap'
 maybe chmod 0644 'mailcap.order'
 maybe chmod 0644 'mailname'
+maybe chmod 0644 'mail.rc'
 maybe chmod 0644 'manpath.config'
 maybe chmod 0644 'matplotlibrc'
 maybe chmod 0755 'maven'
 [...]
 (My modification to myfile.conf)
 [...]

Eu entendo que o etckeeper precisa rastrear as permissões de arquivo no repositório git mesmo que eu não entenda o propósito deste reordenamento. Gostaria de separar em commits distintos todas as modificações relacionadas ao diretório ./etckeeper e modificações relacionadas ao conteúdo dos arquivos de configuração.

Como fazer isso?

    
por Ortomala Lokni 16.01.2017 / 15:03

1 resposta

4

Etckeeper configura um gancho git para confirmar o arquivo contendo informações de metadados sempre que os metadados forem alterados. Isso geralmente é a coisa certa. Se você realmente quiser ignorar o gancho de confirmação, você pode executar git commit --no-verify .

O arquivo de metadados é classificado por nome de arquivo. A ordem de classificação depende do local do ambiente. No seu caso, o arquivo parece ter sido classificado em uma ordem lexicográfica de byte puro (com mail.rc antes de mailcap desde que . é antes de c em ASCII), mas agora você está executando git em uma localidade onde ordenar é feito de uma maneira um pouco humana, com pontuação ignorada exceto como último recurso (provavelmente um código de idioma UTF-8) (com mail.rc após mailname desde que n é antes de r ). Execute LC_ALL=C git commit para fazer a classificação em ordem lexicográfica pura. Seria necessário adicionar export LC_COLLATE=C a /etc/etckeeper/etckeeper.conf para forçar uma ordem de classificação consistente.

    
por 17.01.2017 / 01:54

Tags