Gnome-Registrierung (~/.gconf) und Revisionskontrolle

Gnome-Registrierung (~/.gconf) und Revisionskontrolle

Ich behalte die meisten Dot-Dateien meines Home-Verzeichnisses unter Revisionskontrolle, damit ich Änderungen problemlos zwischen den etwa fünf Desktop-Rechnern und Dutzenden von Servern, die ich verwende, verschieben kann. Leider ~/.gconfist mein Verzeichnis in dieser Hinsicht ein wenig lästig, da gconfd anscheinend gerne willkürliche Änderungen an Leerzeichen vornimmt und, noch schlimmer, die mtime="..."Attribute von Einträgen aktualisiert, die es nicht geändert hat.

Hat jemand eine Idee, wie man damit am besten umgehen kann? Ich würde es vorziehen, niemals Leerzeichenänderungen oder Zeitänderungen festschreiben zu müssen, wenn sich ein Wert nicht geändert hat, damit ich meine Unterschiede im Laufe der Zeit problemlos verfolgen kann.

Antwort1

Haben Sie versucht, einen Dump zu speichern, anstatt das Verzeichnis in Git zu speichern?

 gconftool-2 --dump /

Antwort2

Ich untersuche derzeit nur die wirklichen Unterschiede mithilfe eines Diff-Programms, das die Mtime- und Whitespace-Änderungen ignoriert:

#!/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)

Ich lasse Subversion dies verwenden, indem ich ausführe svn diff --diff-cmd gconf-diff .... Ich setze Dateien zurück, die keine wesentlichen Änderungen aufweisen. Dies ist jedoch etwas umständlich und funktioniert nicht gut bei Dateien, bei denen sich nur ein oder zwei Elemente geändert haben, aber ein Dutzend andere neue Zeitstempel haben, da alle diese Änderungen noch festgeschrieben sind.

verwandte Informationen