8

たとえば、mercurial リポジトリがある場合https://code.google.com/p/potentiallyLargeクローンを作成する前にそのサイズを確認できるコマンドはありますか? 何かのようなもの

hg size https://code.google.com/p/potentiallyLarge

また、Subversion リポジトリに対してこれを行うためのコマンドはありますか?

4

2 に答える 2

4

ディスクで使用されるサイズは、クローンの作成に使用される帯域幅とは異なります。一部のホスティングサイト(Bitbucketなど)はディスクにサイズを表示するため、クローンを作成する前にシステムに必要なスペースの量を事前に知ることができます。しかし、Google Codeは役に立たないことがわかりますので、ここでは役に立ちません。

Mercurialワイヤープロトコルは、リポジトリの大きさを示すコマンドを公開していません。通常のクローンを作成する場合、クライアントは受信するデータの量を事前に認識せず、データのストリームを受信するだけです。変更ログを受け取った後、クライアントは予想されるマニフェストとファイルログの数を知っていますが、それらのサイズはわかりません。

実際、サーバーがクローンが使用するデータ量を計算することは困難です。使用される圧縮が異なるため(bzip2とgzip)、使用されるネットワーク帯域幅はディスク容量よりも少なくなります。ただし、--uncompressedクローン(Google Codeではサポートされていません)で使用する場合は、トリックがあります。以下を参照してください。

クローンが使用する帯域幅を知る唯一の方法は、それを作成することです。すでにクローンがある場合は、クローンhg bundleのシミュレーションに使用できます。

$ hg bundle --all my-bundle.hg

バンドルのサイズは、リポジトリにあるデータの量を示します。

秘訣: Google Codeがサポートしていればhg clone --uncompressed、それを使用してリモートリポジトリのサイズを知ることができます。を使用する--uncompressedと、クライアントはサーバーに.hg/ディレクトリのコンテンツをbzip2で再圧縮せずにそのまま送信するように要求します。便利なことに、サーバーはクライアントにリポジトリのサイズを通知することでストリームを開始します。したがって、そのようなクローンを開始し、クライアントがリポジトリのサイズを示す行を出力したら、(Control-Cを使用して)それを中止できます。

于 2012-09-01T09:36:13.883 に答える
2

更新:以下の私の回答は間違っていますが、MG が適切な情報を提供してくれたので、ここに残しておきます。正解は「いいえ」のようです。

素晴らしい方法ではありませんが、回避策のような方法です。Ahg clone URLは本当にただです。hg init ; hg pull URL このコマンドhg incomingは、プルを実行した場合に何が得られるかを示しているので、次のようにすることができます。

hg init theproject
cd theproject
hg incoming --stat URL_TO_THE_PROJECT

次のようにフォローアップすると、取得するデータの量をかなり正確に推測できます。

hg pull URL_TO_THE_PROJECT

のネットワーク効率についてはわかりhg incomingませんが、すべての変更セットからすべてをダウンロードするとは思いませんが、それについては間違っている可能性があります。--bundle着信プルダウンをファイルに保存し、後でプルして二重ダウンロードを回避するオプションを提供します。

于 2012-09-01T00:31:47.210 に答える