LFSを使用してGithubサーバーに1GBの大きなファイルをアップロードしようとしました。うまくいきました。大きなバイナリファイルはソースコードファイルのように追跡できないため、小さな変更でもプッシュするとアップロード全体のコストがかかり、その結果、プッシュごとに1GBの帯域幅が使用されます。しかし、一度プッシュすると、ソースコードファイルとして扱われていることに気づいたので、小さな変更ですぐにコミットされました。どうしてそれは可能ですか?大きなファイルでもGitLFSはどのように最適化されていますか?
バイナリブロブは、任意の量のブロックに分割し、ハッシュしてから、「既知の正常な」コピーと比較することができます。
その結果、大きなファイル内での小さな変更や大きなファイルへの追加により、ハッシュされたブロックサイズに等しい量の変更が発生する可能性があります。
これはBitTorrentで使用されるシステムと同様の手法であり、両方の当事者がすでにファイルの一部を持っている可能性がある場合に、帯域幅の使用を最小限に抑えてサイズが不明なファイルをネットワーク経由で転送する必要があるシステムに関連します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加