私はしばらくこれをgitを使用してやっています。私はホームディレクトリ全体を追跡するのではなく、積極的に変更している部分だけを追跡します。これには、たくさんの小さなスクリプトを含む私のhome / binディレクトリ、私の.vimディレクトリ、および他のディレクトリにあるいくつかの大きなプロジェクトが含まれます。また、ターミナルとopenboxの設定、およびその他のさまざまなアプリがリポジトリに追加されています。
これはすべてが同じ権限セットを持っているので十分に機能し、元のタイムスタンプは気にしません。そのうちのいくつかをを使用してサブモジュールに分割する予定ですgit filter-branch
。異なるサブディレクトリにあるファイル間に相互依存関係があるため、これは少しトリッキーです(たとえば、一部の.vimスクリプトは私のbinディレクトリからスクリプトを呼び出すことがあります...あまり良い例ではありませんが、うまくいけばポイントがわかります)。
私はこれ以上包括的なソリューションを見つけていませんが、git-home-historyを含め、実際には何も調べていません。ホームディレクトリ全体をリビジョン管理下に置くのはかなり複雑になり、多くの変数が存在するようです。たとえば、Firefoxプロファイルをリビジョン管理下に置くと、膨大な量のバイナリ差分が蓄積されます。また、sshキーのようなものは、複製よりも紛失の方が多い場合があります。
アクセス許可を追跡したい場合(gitが既に追跡している実行可能ビット以外)、明らかにそれを行うフックがあります。これはこのserverfaultスレッドで言及されています。