3

ダウンロード時の私の会社のSVNコードリポジトリは約250MBです。何年にもわたる変更により、おそらくかなり大きくなっています (そのサイズの 4 倍)。これをすべて GitHub に移行した場合、各ユーザーは 250 MB をダウンロードする必要がありますか? それとも、リポジトリの完全な履歴を取得するために 1 GB 以上をダウンロードする必要がありますか?

4

3 に答える 3

3

履歴なしで複製できます: git clone --depth 1 your_repo_url ( https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_do_a_quick_clone_without_history_revisions.3Fを参照)

于 2012-12-28T05:02:24.347 に答える
2

これをすべて GitHub に移行した場合、各ユーザーは 250 MB をダウンロードする必要がありますか? それとも、リポジトリの完全な履歴を取得するために 1 GB 以上をダウンロードする必要がありますか?

各ユーザーは、初めてクローンを作成するときに、リポジトリ全体を取得する必要があります。ただし、git サーバー側の実装では、「圧縮された」バージョンのリポジトリがpackfileとして送信されます。したがって、送信されるデータの重量は 1Gb よりはるかに少なくなります。

連続する各フェッチ/プル操作は、サーバーが認識していて、クライアントのローカル リポジトリにまだ存在しない新しい git オブジェクト (コミット、ツリー、およびブロブ) のみを取得します。それらもpackfileとしてネットワーク経由で送信されます。


@akonsu は、レポジトリの浅いバージョン (つまり、履歴全体なし) を複製できると述べているのは正しいですが、それにより、ユーザーは GitHub でホストされているメインのアップストリーム レポジトリとそれ以上やり取りできなくなります。

実際、git cloneのドキュメントには次のように記載されています。

于 2012-12-28T08:26:16.097 に答える
0

多数のファイルの多数のバージョンがある場合、オブジェクト データベースは時間の経過とともにますます大きくなります。

デフォルトでは、git は zlib 圧縮アルゴリズムを使用して個々のブロブを保存していました。しかし、複数のオブジェクトを 1 つのパック ファイルにマージするように git に指示することは可能です。これもデルタ圧縮方式を使用してスペースを節約します。履歴全体がまだ存在しているため、以前の状態に基づいてコマンドを実行するよりも、解凍に少し時間がかかります (古いバージョンのチェックアウトなど)。しかし、これがどれほどマイナーであるかを強調する必要があります。正直なところ、1秒未満の増加です。

プロジットブックのパックファイルの詳細: http://git-scm.com/book/en/Git-Internals-Packfiles

于 2013-01-02T20:47:04.770 に答える