gitでディレクトリツリーの比較・一貫性チェック

久しぶりの記事。

gitでディレクトリツリー同士の一貫性チェックをしてみます。
2つのディレクトリツリーが同じものかどうかを調べます。

よく使われるのは、diffとか、findとmd5を使ったりするやり方だと思います。
が、今回使ってみたのはgit。

やってみたことは、

git init
git add .
git write-tree

これだけ。
これで、そのディレクトリツリーを表すハッシュ値が手に入る。
あとは、これを比較するだけ。
比較とか一貫性チェックって言ってるけど、単純に違うか同じかを確認するだけです。
あと、.gitがあるところではやらないほうがいいと思います。
全ファイルをステージングすることになるので、あとから面倒かと。
比較した後は、

rm -rf .git

とかで、gitのディレクトリを消しといたほうがいいと思います。

見慣れないgit write-treeコマンドについては、
Git - Gitオブジェクト
あたりを参考にしました。

メリットは、速い、確実、簡単、というところでしょうか。
もともと、異なるサーバーのディレクトリツリーを比較したいという用途だったので、
ハッシュ値の比較だけでできるのは便利です。

gitのバージョン管理じゃない使い方でした。

PS:なんか間違ってる気もするので、もうちょっと検証してみます。