?

Log in

No account? Create an account

September 10th, 2009


Previous Entry Share Next Entry
06:32 pm - 入門Gitの目次はというと
先般書き上げたgit本の カバーのコピーを貰った。

せっかくだからここに貼ってみる。

目次はというと、こんな具合である。
  1. gitとは
  2. gitの基本概念
  3. インストールと初期構成
  4. 独りで使う
  5. 2か所で使う
  6. グループで使う
  7. ブランチを使った開発
  8. 分散環境とブランチとの関連
  9. 変更履歴を追いかける
  10. パッチ・べースのワークフロー
  11. ゴミファイルの無視
  12. 構成変数
  13. リモート・リポジトリ定義
  14. ファイル・アトリビュート
  15. 歴史の2分探索
  16. 間違いからの回復
  17. フック・メカニズム
  18. リポジトリの出版公開
  19. gitの周辺
上の目次より前に、Linus君の「はしがき」を英和対訳でつけている。

最初の第一章と第二章では、どのgit入門本でも書かないといけない決まりになっている「ファイルもディレクトリもコミットも、その内容を表すデータのSHA-1ハッシュでオブジェクト名を付けて格納します」なんてのももちろん出て来るけれど、そういう事実の記述だけではなくて、そういう形で記録しないといけないのはどうしてなのか、とか、そういう形で記録してあると何がうれしいのか、とかいった、「何故」をわかって貰えることに留意して書いた。なるべく「何故」を解説しよう、と努めたのは、この他にも、そもそも版管理とは何さ、から始まって、コミット家系図とか、ブランチとか、インデックスとか、三方向マージとかいった、gitが使う様々の概念の説明に共通しているし、後の章に関しても同じである。「何故」の記述は今まで世に出ていた他のgit本に共通してボクが読んでモノ足りないと思った点だったことはここにもすでに書いた

第三章でインストールと初期設定をざっくりと説明したあとは、第四章から第八章までで、リポジトリに記録する歴史を育ててゆく過程を解説した。いちばん基本的な個人使用から始めて、グループでのpush/pullによる協業まで、章を追う毎に高度なワークフローが導入されるけれど、インデックスを使って細かに確認しながらコミットを育ててゆくとか、ある程度までできたところで一度歴史を振り返って綺麗に書き直すとか、コミット家系図にそった「ブランチの目的」の考え方とか、根本にあるgit的なモノの考え方は、第四章の「独りで使う」から第八章の「分散環境とブランチ」まで一貫して適用されるものだ。

本には第一部・第二部といった明らさまな区分を付けなかったけれど、基本的な「記録しながら歴史を育てる」という手法とモノの考え方をカバーしたここまでが第一部である。

第九章では、そうやって育ててきた歴史に記録された情報を効果的に調べるための手法とメカニズムについて解説した。これは、以前に「Linus君の究極のコンテンツ・トラッキング」というタイトルでここにも一部サワリだけ書いたことがある。最初に導入したgit log -Sから始まって、git blameにいたるまでの各手法が、どういう理由からそういう機能として作られていて、どういうときに有用なのか、を理解して貰えるように書いた。

第十章ではじめて、オープンソースの世界で多用されるパッチ・べースのワークフローを登場させた。会社で仕事に使うだけ、というユーザには馴染みのないワークフローと考え方だと思うので、パッチ・べースのワークフローを使わない向きは飛ばして貰っても、本の他の部分を読むのには全く問題がない。そのかわり、ボクがこれまでLinus君と一緒に仕事をしてきて学んだ、オープンソースコミュニティで生きてゆく際のコツ、といったものを「オープンな開発プロセス」という一節としてこの章に加えることにした。ボクの経験が、少しでもオープンソースに関わる人たちに役に立ってくれると良いな、という考えからだ。

第十一章からは第十五章までは各論である。第十一章のgitignore、第十二章のgitconfig、第十三章のリモート定義、第十四章のgitattribute、第十五章のbisect、といった、各々のメカニズムを紹介しているが、第一部でのgit的なモノの考え方が理解された上で読めば、第十三章のリモート定義が第十二章で解説するgitconfigの理解に依存する点を除けば、これらの章はどういう順序ででも読めるだろうと思う。

第十六章の「間違いからの回復」には、今までメーリングリスト等でボクがよく見た、git新人のよく陥る間違い・パニックしそうな事態からの回復法について書いた。もともとgitは一旦コミットして記録したデータを間違いで失なうことが非常に難しいように作ってあるので、ユーザが「こういうことが起こるだろう」と想像した動作が、gitが実際にする動作と異なることがあったばあいにも、それがどういう事態であるかを正しく診断できて、回復法を知っていさえすれば、何も恐れることはないのである。そういう目的から、「何故」をまじえて書いたので、ここは結構ページ数も多くなった。

第十八章では、自分が育ててきた歴史を他人に公開するための方式を解説した。これにはフック・メカニズムでカスタマイズしたい部分があるので、その前に第十七章にフック・メカニズムとサポートしているフックを解説している。

最後に第十九章で外部各種サービスやURLなどの参考情報を紹介して、あとがき、で締めくくり、という按配である。

特に第十六章では、あえて「誤り」とか「間違い」とかいう表現を使ったが、SubversionだかCVSだかを知っているからgitも同じようなモノだろう、と考えて眺めた読者はショックを受けるかも知れぬ。同じようなモノだ ろう、というのが正しいならば、無理に乗りかえる必要はないわけだが、上流プロジェクトが乗りかえたから自分も乗りかえざるを得ない、というユーザは居るわけで、そういうユーザにとっては、基本的なモノの考え方の違いを説明せずに「この辺はSubversionと似てる」とか、「ここはSubversionと違うから気を付けよ」とだけ説明しておしまいにするのは、本として無責任である。それでは、読者は「ここは違う」に対して「どうして違うのサ、けしからん」という反応しかできない状態から卒業できないままにおわってしまう。「こういう風にモノの考え方が違うから、Subversionとは違うけれど、 違って当然なのだ」と納得するところまで行かなければgitを習得したことにはならないし、そうなって始めて、ツールを使いこなせるようになるだろう。「こういう風に考えれば、ここでエラーになるのが当然なのはわかるだろう。で、同じ理由から、正しいやり方はこうであるべきなのもわかるだろう」という「何故」の説明に努めたのにはそういう意図がある。

本来なら、こういうことは、本の「まえがき」に書いたら良いことなのだが、本はネットで買うのが当り前になってしまった現代では、本屋で「まえがき」を立ち読みして買うかどうかを決める、という十数年前とちがって、そういう内容の「まえがき」は無用の長物だ、というのがボクの持論だった。「はしがき」をLinus君に書いて貰ったこともあって、この本にはそういう「まえがき」を付けなかった。

だけど、昨日、久しぶりに新しい本を読む機会があった。これは、ボクのブログのLinks欄に付けてあるamazon.comの欲しいものリストから、gitユーザのKateさんが選んでプレゼントしてくれた本で、コンピュータ本ではない。それを最初のページから読み始めてみて、「まえがき、もなかなか良いな」と気が変わった。

一冊の本を読むのは航海に出るようなものだ。本を手に取って「さあ読むぞ」と思ってからでも、やはりこれからどういう冒険が待っているのか、目次よりすこうし詳しい海図があると、心がまえもしやすくて安心できるものだ。

もう印刷所におくってしまって輪転機も廻っているので、今さら本に追加することはできない。だからとりあえずはここに書いておいて、申しわけないが、読んでくれる人がこのページを「まえがき」代わりに見てくれたら嬉しいとおもう。


(後日追記)
http://www.kernel.org/~junio/gitbook-errata.htmlにて、初版以来の誤植訂正のための正誤表や、読者の方々がレビューされたブログ記事へのリンク集を開しています。




 

Tags:

(Leave a comment)

入門Gitの目次はというと - gitster's journal — LiveJournal

> Recent Entries
> Archive
> Friends
> Profile

Links
Pages at the k.org
Gifts
貢ぎ物
The latest blog by Gitster

> Go to Top
LiveJournal.com