私は Git について学んでいます。Git リポジトリを表す数学的構造の説明があれば素晴らしいと思います。たとえば、有向非巡回グラフです。そのノードはコミットを表します。そのノードには、ブランチなどを表すラベル (ノードごとに最大 1 つのラベル、2 回使用されるラベルはありません) があります (この説明が正しくないことはわかっています。探しているものを説明しようとしているだけです。)
2 に答える
最も関連性の高い回答には、Git リビジョン ツリーの最も重要な特徴である暗号署名(各リビジョンには親リビジョンのハッシュとコミットの詳細が含まれます)を含める必要があると思います。
これはマークル ツリーとして知られています: http://en.wikipedia.org/wiki/Merkle_tree
いくつかの背景については、以前の回答を参照してください: ( Git: ファイルのバージョンが完全に存在するようにコミットを処理する方法 (差分だけでなく) )
バックグラウンド
デルタの格納は、RCS、CVS、Subversion など (SourceSafe?) によって普及しました。主な理由は、変更セットが既にデルタ形式になっているため、変更セットの転送が容易になったためです。最新の VCS-es (主に分散型) はそれから離れて進化し、データの整合性に重点を置いています。
データの整合性
オブジェクト データベースの設計により、git は非常に堅牢であり、スナップショット内の任意の場所またはリポジトリ全体で破損したデータのビットを検出します。Git リポジトリの暗号化特性の詳細については、次の記事を参照してください: Linus talk - Git vs. data破損?
テクノのせせらぎ: コミット履歴は、暗号学的に強力なマークル ツリーを形成します。チップ コミット (HEAD) の sha1 合計が一致すると、数学的に次のようになります。
- ツリー コンテンツ
- ブランチの履歴 (すべてのサインオフとコミッター/作成者の資格情報を含む)
同一です。これは、git (およびこの設計機能を共有する他の SCM) の巨大なセキュリティ機能です。