VCSの特徴†
歴代のVCS(Version Control System: バージョン管理システム)の特徴
名称 | 環境 | リポジトリ |
RCS | スタンドアロン | なし(foobar.c,v) |
CVS Subversion | ネットワーク | 単一のものを共有 |
Git | 複数のものが分散 |
部構造†
Gitではコミットする度にリポジトリ内部にひとまとまりのデータ構造が作成される。
- 作成されるデータ構造の内訳
- コミットオブジェクト
一回のコミットそのものを表すデータオブジェクト。
- コミットオブジェクトを起点として、そのコミット時点の全ての情報を参照できる。
- コミットオブジェクトにはその内容から算出されるSHA1のハッシュが識別子として割り当てられる。これをコミットIDと呼ぶ。
- コミットオブジェクトはその直前のコミットオブジェクトを指し示している。これを手繰ってゆくことでコミットの履歴を新しい方から古い方へ参照することができる。
- ツリーオブジェクト
コミットオブジェクト毎に、管理しているファイルの階層関係を表すオブジェクト
- コミットオブジェクトはおおざっぱに言うとファイルの階層関係を記録しているだけ。
OSが管理するファイルシステムそのものを記録しているわけではないので、ファイルやディレクトリの属性がすべて記録されているわけではない。
特にそのファイルのオーナやグループは全く記録されていない。
- BLOB (Binary Large OBject)
ファイルの内容を保持するオブジェクト。
- ファイルオブジェクトにもファイル内容のSHA1のハッシュ値がIDとして割り当てられる。
Gitでは、BLOBのオブジェクトIDが同じであれば、実ファイルシステム上で異なるファイルであっても、あるいは全く関係ない別のリポジトリのファイルであっても、すべて「同一のもの」として扱われる。
分散リポジトリ†
- 追跡ブランチ
- refspec
#img(): File not found:
おすすめドキュメント†
- Git入門:Git初学習者のための効率的な学習方法を考えてみた
ツールとか†
開発フロー†
http://keijinsonyaban.blogspot.jp/2010/10/successful-git-branching-model.html
- ほんこれ
Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be selfevident. Data structures, not algorithms, are central to programming. -- Rob Pike