入門Git

入門Git

入門Git

入門gitを持っているにもかかわらず本屋で見かけて衝動買い。ま、後悔はしていない。

ざっと眺めた感じだと一冊目に読む本としては入門gitのほうがいい。しかし詳しさという点でいうと入門Gitだろう。違いが大文字小文字だけとは紛らわしい。--);

またGitのプロジェクトリーダが書いているだけあってLinuxプロジェクトでの運用事例も豊富だ。

個人的に思う一番の読みどころは Chapter9 変更履歴を追いかける だ。ファイルの内容の追跡っぷりがすごい。

例えば 9.5. 行範囲変更の検出 をやってみる

カーネルをclone。1時間くらいかかった><

$ git clone git://git2.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-2.6
$ du -s -h linux-2.6/
731M	linux-2.6/
struct map_range {
	unsigned long start;
	unsigned long end;
	unsigned page_size_mask;
};

という箇所を探す。タブ文字入力はCtrl+Vやってからね。

$ git log --pretty=short -S'struct map_range {
>       unsigned long start;
>       unsigned long end;
>       unsigned page_size_mask;
> };' v2.6.30 -- arch/x86/mm/init.c
commit f765090a2617b8d9cb73b71e0aa850c29460d8be
Author: Pekka Enberg <penberg@cs.helsinki.fi>

    x86: move init_memory_mapping() to common mm/init.c

f765090a2617b8d9cb73b71e0aa850c29460d8beというコミットが見つかるのでこれを調べる。

$ git show f765090
commit f765090a2617b8d9cb73b71e0aa850c29460d8be
Author: Pekka Enberg <penberg@cs.helsinki.fi>
Date:   Thu Mar 5 14:55:05 2009 +0200

    x86: move init_memory_mapping() to common mm/init.c
    
    Impact: cleanup
    
    This patch moves the init_memory_mapping() function to common mm/init.c.
    
    Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
    Cc: Yinghai Lu <yinghai@kernel.org>
    LKML-Reference: <1236257708-27269-14-git-send-email-penberg@cs.helsinki.fi>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>

gitwebだと↓

http://repo.or.cz/w/linux-2.6.git?;a=commit;h=f765090a2617b8d9cb73b71e0aa850c29460d8be

git guiだと↓

これでどっから切り取ってきたかがわかる。

こんどは 9.8 git guiやgitwebでのgit blameの使用 をやってみる。

まずgit自体をcloneしてくる。容量は51M。git guiする。

$ git clone http://repo.or.cz/r/alt-git.git alt-git
$ du -s -h alt-git/
 51M	alt-git/
$ cd alt-git
$ git gui

revision.cをブラウズする。



gitwebだと↓

http://repo.or.cz/w/alt-git.git?a=commit;h=e646de0d14bac20ef6e156c1742b9e62fb0b9020

http://repo.or.cz/w/alt-git.git?a=commit;h=ae563542bf10fa8c33abd2a354e4b28aca4264d7


e646de0で濱野さんがコミットしたやつをae56354でLinus君が持ってったらしい。

ちなみにgitの最初のコミットは↓

$ git show e83c5163
commit e83c5163316f89bfbde7d9ab23ca2e25604af290
Author: Linus Torvalds <torvalds@ppc970.osdl.org>
Date:   Thu Apr 7 15:13:13 2005 -0700

    Initial revision of "git", the information manager from hell

gitkだと↓

いや、あの、hellって。。。どっから追跡してるんすか><