入門Git
- 作者: 濱野純(Junio C Hamano)
- 出版社/メーカー: 秀和システム
- 発売日: 2009/09/24
- メディア: 単行本
- 購入: 31人 クリック: 736回
- この商品を含むブログ (155件) を見る
入門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って。。。どっから追跡してるんすか><