web-dev-qa-db-ja.com

gitcloneの進行状況インジケーター

git cloneを実行するときにプログレスバーを取得することは可能ですか?私は現在、これまでに数分かかったgitクローンを実行していて、すぐに終了するかどうか知りたいので、疑問に思っています。

22
Olivier Lalonde

あんまり。 git cloneにはさまざまな段階があります:

  1. 送信する必要のあるオブジェクトを検出します( "オブジェクトのカウント:nnn")
  2. それらのオブジェクトを圧縮して送信します
  3. 受信したパックにインデックスを付ける
  4. 受信したファイルをチェックアウト

ステージ1では、各ブランチヘッドからコミットグラフをウォークスルーして、すべてのコミットと関連オブジェクトを見つけます。コミットの数が事前にわからないため、この進行状況を測定することはできません。悲しいことに、これはクローン操作で多くの時間が費やされる場所です。

ステージ2には進行状況カウンターがありますが、ボリュームではなくオブジェクトをカウントします(したがって、特にリポジトリに大きなブロブがある場合、そのレートは異なります)

ステージ3と4には進行状況カウンターがありますが、通常は前の2つのステージよりもはるかに高速です。

18
araqnid

できるよ:

   du -s .git

一時的なコンテンツのサイズの変化を監視してアイデアを得る。

   watch du -s .git

コマンドを再入力せずに監視できます。以下のワンライナーのようなものは、定期的に1秒あたりのkB単位のデータ蓄積率を示します。

    delay=5; prev=`du -sk .git/ | cut -f 1`; sleep $delay; while true; do  cur=`du -sk  .git/ | cut -f 1`; expr \( $cur - $prev \) / $delay ; prev=$cur; sleep $delay; done
15
Sasha Pachev

私は現在、これまでに数分かかったgitクローンを作成していますが、すぐに終了するかどうか知りたいと思います。

Git 2.10(2016年第3四半期)では、_git clone --progress_がより冗長になります。

commit 38e590e by Jeff King(peff)を参照してください。
(濱野純雄が commit a58a8e 2016年8月4日に合併)

clone:接続チェックに実際の進捗メーターを使用する

複製されたリポジトリの最初の接続チェックは遅くなる可能性があるため、 781aa4(clone:_check_everything_connected_が実行されたときにユーザーに通知します。2013-05-03) 追加されました「偽の」進捗メーター。開始時に「_Checking connectivity_」と言い、最後に「done」と言います。間に何もありません。

check_connected()は実際のプログレスメーターの実行方法を知っているので、偽のプログレスメーターを削除して、代わりにそれを使用できます。

8
VonC

あなたはフォルダを見たいかもしれません

$project/.git/objects/pack

クローン作成中は、tmp_pack_で始まるファイルが必要です。現在ダウンロード中のgitパックが含まれています。

この情報を使用すると、期間を目で確認できる可能性があります。

2
Jonas Gröger