Journey through Git’s 20-year history

インターネットを眺めていたら面白いブログを見つけたので自分で作ってみることにした(with AI)

実装したのがこちら GitHub - nozo-moto/first-git

このリポジトリの中ではGit初期にあったらしいコマンドと、ログを表示するコマンドを実装している

  1. init-db: リポジトリの初期化 .dircacheディレクトリを作成するだけのシンプルな実装

  2. update-cache: ファイルをインデックスに追加 ファイルのSHA-1ハッシュを計算し、インデックスファイルに追記。 ステージングのようなもの

  3. write-tree: 現在の状態をツリーオブジェクトとして保存 インデックスの内容をソートして連結し、そのハッシュ値を計算。 ディレクトリ構造を表現するかがわかるやつ

  4. commit-tree: コミットオブジェクトの作成 コミットのツリーを作るところ

    • tree: 対応するツリーオブジェクトのハッシュ
    • parent: 親コミットのハッシュ(最初のコミット以外)
    • author: 作成者情報とタイムスタンプ
    • message: コミットメッセージ
  5. cat-file: オブジェクトの内容表示

  6. show-diff: 差分の表示 HEADから始めて、parentリンクをたどることで履歴を遡る GitのグラフはDAGとして実装されているらしい?(それはそうでは/?)