単なるメモ
- repo でクローンする場合は、
git initのあとにリモートを設定して、git fetchしている - その際にgitオブジェクトはフェッチしたプロジェクトの
.gitディレクトリーではなく、.repo/project-objectsディレクトリーの下に リモートの名前、プロジェクトのディレクトリーから計算されるディレクトリーに Git オブジェクト専用の.gitディレクトリーが作られる - 上記のGit オブジェクト専用のディレクトリーへは Git 標準仕様にある
objects/info/alternatesというファイルをもって参照することでディレクトリーを解決する - サブマニフェスト構成のマニフェストにおいて、同じプロジェクトが同じリモート、ディレクトリーに配置される場合、同じ Git オブジェクトのディレクトリーを参照するので、フェッチの通信量を抑えられる
- すでに一度
repo syncした後で、リモート名を変更すると、プロジェクトの.gitディレクトリーを破棄して新しい.gitディレクトリーを作成し、Git オブジェクト専用の.gitディレクトリーも新しいものを作成する- 古い Git オブジェクト用
.gitディレクトリーは破棄しない
- 古い Git オブジェクト用
- 古いバージョンの
repoでは、サブマニフェスト構成で複数のサブマニフェストが同じプロジェクトを同じリモートから同じパスで取得してる場合に、上記のディレクトリーの作り直しが失敗するケースがある(v2.41 以前)
