%20e%20controle%20de%20revis%C3%A3o.png)
Eu mantenho a maioria dos arquivos de ponto do meu diretório pessoal sob controle de revisão, para que eu possa mover facilmente as alterações entre qualquer uma das cinco ou mais máquinas desktop e dezenas de servidores que uso. Infelizmente, meu ~/.gconf
diretório é um pouco complicado quando se trata disso, porque o gconfd parece realmente gostar de fazer alterações arbitrárias nos espaços em branco e, pior ainda, atualizar os mtime="..."
atributos nas entradas que não foram alteradas.
Alguém tem alguma opinião sobre boas maneiras de lidar com isso? Eu preferiria nunca ter que confirmar alterações de espaço em branco ou alterações de horário quando um valor não foi alterado, para que eu possa acompanhar facilmente minhas diferenças ao longo do tempo.
Responder1
Em vez de armazenar o diretório no git, você tentou armazenar um dump?
gconftool-2 --dump /
Responder2
Atualmente examino apenas as diferenças reais usando um programa diff que ignora as alterações de mtime e espaços em branco:
#!/usr/bin/env ruby
require 'tempfile'
input2 = ARGV.pop || (
$stderr.puts("Usage: gconf-diff [opts] <file> <file>")
exit(1)
)
input1 = ARGV.pop
UNWANTED_PAT = /mtime="\d+"/
def copy_tmp(id, path)
t = Tempfile.new("gconf-diff-#{id}-")
File.open(path).each { |line| t.write(line.gsub(UNWANTED_PAT, '')) }
t.close
t
end
t1 = copy_tmp('1', input1)
t2 = copy_tmp('2', input2)
system('diff', *(ARGV + ['-B', '-b', t1.path, t2.path]))
exit($?.exitstatus)
Eu tenho o Subversion usando isso executando svn diff --diff-cmd gconf-diff ...
. Eu reverto arquivos que não apresentam alterações significativas. No entanto, isso é um pouco estranho e não funciona bem com arquivos onde apenas um ou dois itens foram alterados, mas uma dúzia de outros possuem novos carimbos de data/hora, já que todas essas alterações ainda estão confirmadas.