Реестр Gnome (~/.gconf) и контроль версий

Я держу большинство точечных файлов моего домашнего каталога под контролем версий, чтобы я мог легко перемещать изменения между любым из пяти или около того настольных компьютеров и десятками серверов, которые я использую. К сожалению мой ~/.gconf Когда дело доходит до этого, каталог - это немного больно, потому что gconfd, похоже, действительно любит вносить произвольные изменения пробелов и, что еще хуже, обновлять mtime="..." атрибуты записей, которые не изменились.

Есть ли у кого-нибудь мысли о хороших способах борьбы с этим? Я бы предпочел никогда не вносить изменения пробелов или времени, когда значение не изменилось, чтобы я мог легко отслеживать свои различия с течением времени.

2 ответа

Решение

В настоящее время я изучаю только реальные различия с помощью программы diff, которая игнорирует изменения mtime и пробелов:

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

У меня есть Subversion использовать это, запустив svn diff --diff-cmd gconf-diff ..., Я возвращаю файлы, которые не имеют существенных изменений. Однако это немного неловко и плохо работает с файлами, в которых изменился только один или два элемента, но дюжина других имеет новые временные метки, поскольку все эти изменения все еще сохраняются.

Вместо того, чтобы хранить каталог в git, вы пытались сохранить дамп?

 gconftool-2 --dump /
Другие вопросы по тегам