diary/Kojima

・git とか

学校の授業で OSS の開発ツールについて触れることになったので,最近のカー ネルの SCM(Source Code Managemet)ツールである git も多少イジってみた.

「多少イジってみた」程度では,git の概要すら見えてこないけど,cvs とか subversion といった従来の SCM とは根本的な設計から違うことはよく分かった(苦笑

従来の SCM だと,オリジナルのファイルがあって,それとチェックインした各 バージョンとの差分を記録していくスタイルだけど,git の場合は差分を取る という作業をせずに,それぞれに異なるバージョンのファイルをそのまま保存 するスタイルらしい.

もちろん,異なるバージョンのファイルを複数保存するとなると,ファイル名 をどうするかという問題が生じるのだけど,git の場合,ファイル名はファイ ルの中身を元にした sha1 hash で表現することでその問題を回避しているらし い.確かにファイルの中身を元に sha1 hash を取ることにすれば,空白が一つ 多く入っているファイルも元のファイルとは異なる名前にエンコードされるか ら,同じファイル名で無数のバージョンが存在しても許容できるわけか.さら に言うと,元の(あるいは前のバージョンの)ファイルとの差分を取るという作 業を無くすことができて,sha1 hash の計算とファイルシステムの操作で処理 が終了するから,処理速度はずいぶん速くなるらしい.

こういう方式だと,差分ではなくファイルそのものを保存するから(例え圧縮す るとしても)ファイルシステムに対してはあまり優しくないとは思うけど,カー ネルの開発者である Linus さんだからこそ,ファイルシステムの処理には少々 負荷をかけても大丈夫という自信があるんだろうな.

このヘン,いわゆる SCM の常識的なアプローチとは全然異なるところから出て きた発想なんだけど,こういった革新的なアイデアをわずか 2 週間くらいで動 くようにしてしまう Linus さんの能力というのはあらためて凄いと思うなぁ..



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41