Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2012-07-17

Git 使ってるときに carton.lock の diff を読みやすくする

| 19:30 | Git 使ってるときに carton.lock の diff を読みやすくする - NaN days を含むブックマーク はてなブックマーク - Git 使ってるときに carton.lock の diff を読みやすくする - NaN days

Carton が生成する carton.lock は開発中わりと頻繁にアップデートされるものの JSON で書かれているので diff が冗長で困る!

そういうときは .gitattributes にこういう風に書いてやる:

% cat .gitattributes 
/carton.lock diff=cartonlock

で、diff=cartonlock なファイルの場合は JSON を "module~version" 形式に展開したもののリストを diff する、という風にしてやると、見やすいです。(--global はお好みで)

% git config --global diff.cartonlock.textconv 'perl -MJSON -0e "\$m = decode_json(<>)->{modules}; print qq(\$_~\$m->{\$_}->{version}\n) for sort keys %\$m"'

git log なんかが以下のようになり便利です。

% git log -p -1 -- carton.lock        
commit ca68ce560d76bbdcde45b6c56c693a4893135e46
Author: motemen <motemen@gmail.com>
Date:   Tue Jul 17 12:53:55 2012 +0900

    +Devel::StackTrace::WithLexicals

diff --git a/carton.lock b/carton.lock
index 9bd1cca..d554455 100644
--- a/carton.lock
+++ b/carton.lock
@@ -54,6 +55,7 @@ Devel::Cover::Report::Clover~0.35
 Devel::KYTProf~0.01
 Devel::StackTrace~1.27
 Devel::StackTrace::AsHTML~0.11
+Devel::StackTrace::WithLexicals~0.10
 Devel::TrackObjects~0.5
 Digest::SHA1~2.13
 Dist::CheckConflicts~0.02