%20%E3%81%A8%E3%83%AA%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86.png)
私はホーム ディレクトリのドット ファイルのほとんどをリビジョン管理下に置き、使用している 5 台ほどのデスクトップ マシンと数十台のサーバーの間で変更内容を簡単に移動できるようにしています。残念ながら、~/.gconf
この点に関しては私のディレクトリは少々面倒です。gconfd は、任意の空白の変更を非常に好むようで、さらに悪いことに、mtime="..."
変更していないエントリの属性を更新するからです。
これに対処する良い方法について何か考えはありますか? 値が変更されていない場合は、空白の変更や時間の変更をコミットする必要がないようにして、時間の経過に伴う差分を簡単に追跡できるようにしたいです。
答え1
ディレクトリを git に保存する代わりに、ダンプを保存しようとしましたか?
gconftool-2 --dump /
答え2
現在、mtime と空白の変更を無視する diff プログラムを使用して、実際の違いのみを調べています。
#!/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 ...
。大きな変更のないファイルを元に戻します。ただし、これは少し扱いにくく、1 つまたは 2 つの項目のみが変更され、他の 12 個の項目に新しいタイムスタンプがあるファイルは、それらの変更がすべてコミットされたままであるため、うまく処理されません。