Androidカーネルの差分をもう少し華麗にゲットするTips

Android Zaurusの日記 「Androidカーネルの差分を華麗にゲットするTips」が素敵だったので、自分ならこうやるかなあ、という方法をご紹介。


引用元では .git ディレクトリの中を直接覗いていますが、ここでは git コマンドを使ってやってみます。最終的にやってることは同じです。


まず、リポジトリを clone します。

$ git clone git://android.git.kernel.org/kernel/common.git
$ cd common


clone してきた branch を確認します。

$ git branch
* android-2.6.27

android-2.6.27 という branch しかローカルにはありません。


リモートの branch は、git remote show コマンドで確認できます。

$ git remote show origin
* remote origin
  URL: git://android.git.kernel.org/kernel/common.git
  Remote branch merged with 'git pull' while on branch android-2.6.27
    android-2.6.27
  Tracked remote branches
    android-2.6.25
    android-2.6.27
    android-2.6.29
    android-2.6.32
    android-goldfish-2.6.27
    android-goldfish-2.6.29

android-2.6.32 などの branch があることが分かります。


次に、タグを確認します。タグの確認は、git tag コマンドです。

$ git tag
v2.6.11
v2.6.11-tree
v2.6.12
v2.6.12-rc2
v2.6.12-rc3
(略)
v2.6.31-rc9
v2.6.32
v2.6.32-rc1
v2.6.32-rc2
v2.6.32-rc3
v2.6.32-rc4
v2.6.32-rc5
v2.6.32-rc6
v2.6.32-rc7
v2.6.32-rc8


ローカルとリモートのブランチで diff を取ります。tags/v2.6.32 という指定は v2.6.32 に省略できます。
とりあえず、全体的にどのような変更が入ったのかを確認したいので、--stat オプションで diffstat を表示してみます。

$ git diff --stat v2.6.32..origin/android-2.6.32
 Documentation/android.txt                     |  121 +
 arch/arm/boot/compressed/head.S               |    5 +-
 arch/arm/boot/compressed/misc.c               |    2 +-
 arch/arm/configs/msm_defconfig                |    2 +
 arch/arm/kernel/debug.S                       |    2 +-
 arch/arm/kernel/entry-armv.S                  |    5 +-
 arch/arm/kernel/process.c                     |   73 +
 arch/arm/kernel/signal.c                      |    9 +
 arch/arm/kernel/traps.c                       |    5 +-
 arch/arm/mm/cache-v6.S                        |   17 +
 block/blk-core.c                              |    5 +-
 block/genhd.c                                 |   17 +
 drivers/Kconfig                               |    2 +
(略)


個人的には、リモートの branch をローカルに持ってくるやり方の方が好きです。リモートに変更が入ったとき、pull すれば追随できるので。
リモートの branch をローカルにもってくるには、 fetch コマンドを使います。

$ git fetch origin android-2.6.32:android-2.6.32
From git://android.git.kernel.org/kernel/common
 * [new branch]      android-2.6.32 -> android-2.6.32
$ git branch
* android-2.6.27
  android-2.6.32


タグとローカルの branch で diff を取ります。

$ git diff --stat v2.6.32..android-2.6.32
 Documentation/android.txt                     |  121 +
 arch/arm/boot/compressed/head.S               |    5 +-
 arch/arm/boot/compressed/misc.c               |    2 +-
 arch/arm/configs/msm_defconfig                |    2 +
 arch/arm/kernel/debug.S                       |    2 +-
 arch/arm/kernel/entry-armv.S                  |    5 +-
 arch/arm/kernel/process.c                     |   73 +
 arch/arm/kernel/signal.c                      |    9 +
 arch/arm/kernel/traps.c                       |    5 +-
 arch/arm/mm/cache-v6.S                        |   17 +
 block/blk-core.c                              |    5 +-
 block/genhd.c                                 |   17 +
 drivers/Kconfig                               |    2 +
 drivers/Makefile                              |    1 +
 drivers/base/power/main.c                     |   45 +
 drivers/char/Kconfig                          |   17 +
(略)


引用元の blog とほとんど変わんないですね。。.git ディレクトリの中を覗かずに、git コマンドでできるよということが書きたかったのです。


2年ぶりに blog を書きました。これからぼちぼち更新再開できるといいな。