2011年11月17日木曜日

git --numstat

gitのnumstatがとても便利です。numstatはソースコードの変更行数を出してくれるので、リポジトリの変更がどの程度行われたのか、また、どのファイルが特に変更されたのかなどをざっと見る時にとても便利です。

簡単な使い方としては、git logと組みわせる方法があります。

$ git log --numstat

以下のようなログが出ます。
(https://android.googlesource.com/platform/frameworks/base のログの一つです)

commit 2237e1e7b636651f0ed1efacefa8aaccb21433ca
Author: Eric Fischer
Date: Wed Nov 2 15:14:43 2011 -0700

Import revised translations. DO NOT MERGE
Change-Id: I2f073cc6d62d757ba4e6565a0c7974ca9cecba4c

1 1 core/res/res/values-en-rGB/strings.xml
1 1 core/res/res/values-ru/strings.xml
5 5 core/res/res/values-sw/strings.xml
24 24 core/res/res/values-uk/strings.xml
2 2 packages/BackupRestoreConfirmation/res/values-sw/strings.xml
2 2 packages/SystemUI/res/values-af/strings.xml
1 1 packages/SystemUI/res/values-ru/strings.xml
8 8 packages/SystemUI/res/values-sw/strings.xml
1 1 packages/SystemUI/res/values-uk/strings.xml

この場合だとリソースのみの変更であることが一目でわかります。

またdiffとの組み合わせも便利です。

$ git diff android-2.2_r1 android-2.3.1_r1 --numstat

99 64 Android.mk
21 1 CleanSpec.mk
418795 0 api/9.xml
24489 1485 api/current.xml
0 31 awt/Android.mk
0 1354 awt/com/android/internal/awt/AndroidGraphics2D.java
0 96 awt/com/android/internal/awt/AndroidGraphicsConfiguration.java
0 87 awt/com/android/internal/awt/AndroidGraphicsFactory.java
0 274 awt/com/android/internal/awt/AndroidImageDecoder.java
0 536 awt/com/android/internal/awt/AndroidJavaBlitter.java
0 75 awt/com/android/internal/awt/AndroidNativeEventQueue.java
0 88 awt/com/android/internal/awt/AndroidWTK.java
0 52 awt/com/android/internal/awt/AwtFactory.java
0 66 awt/com/android/internal/awt/ImageOutputStreamWrapper.java
0 681 awt/java/awt/AWTEvent.java
0 47 awt/java/awt/AWTException.java
0 712 awt/java/awt/AWTKeyStroke.java
0 47 awt/java/awt/AWTListenerList.java
0 61 awt/java/awt/AWTPermission.java
0 39 awt/java/awt/ActiveEvent.java
0 166 awt/java/awt/Adjustable.java
0 352 awt/java/awt/AlphaComposite.java
0 2443 awt/java/awt/BasicStroke.java
0 195 awt/java/awt/BufferCapabilities.java
0 990 awt/java/awt/Color.java