Registro do Gnome (~ / .gconf) e Controle de Revisão

3

Mantenho a maioria dos arquivos de ponto do meu diretório home sob controle de revisão, para que eu possa mover facilmente as alterações entre qualquer um dos cinco computadores desktop e dezenas de servidores que eu uso. Infelizmente, meu diretório ~/.gconf é um pouco chato quando se trata disso, porque o gconfd parece realmente gostar de fazer mudanças arbitrárias de espaço em branco e, pior ainda, atualizar os atributos mtime="..." nas entradas que ele não mudou. / p>

Alguém tem algum pensamento sobre boas maneiras de lidar com isso? Eu preferiria nunca ter que cometer alterações de espaço em branco ou mudanças de horário quando um valor não mudasse, para que eu possa acompanhar facilmente meus diffs ao longo do tempo.

    
por Curt J. Sampson 07.07.2009 / 12:54

2 respostas

2

Eu atualmente examino apenas as diferenças reais usando um programa diff que ignora as alterações de mtime e whitespace:

#!/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 reverti arquivos que não têm alterações significativas. No entanto, isso é um pouco estranho e não lida bem com arquivos em que apenas um ou dois itens foram alterados, mas uma dúzia de outros tem novos timestamps, já que todas essas alterações ainda estão comprometidas.

    
por 07.07.2009 / 13:00
3

Em vez de armazenar o diretório no git, você tentou armazenar um dump?

 gconftool-2 --dump /
    
por 17.07.2009 / 23:57