私はgit clone --depth [N]
を使いたいですが、特定のshaが得られることを保証するようなN
を使用したいと思います。リモートブランチでgit sha深さを取得
リモートリポジトリ内のシャーの深さをどのように判断できますか。それをローカルにクローン化することは、キャッチ22です。私はそれをすべてクローン化しないようにしたいと思います。
私はgit clone --depth [N]
を使いたいですが、特定のshaが得られることを保証するようなN
を使用したいと思います。リモートブランチでgit sha深さを取得
リモートリポジトリ内のシャーの深さをどのように判断できますか。それをローカルにクローン化することは、キャッチ22です。私はそれをすべてクローン化しないようにしたいと思います。
オプション1:
リポジトリの完全クローンを取得する能力を持っている場合は、あなたがgit rev-list HEAD ^42c6ee9 --count
を使用して深さを見つけることができます。
これは、特定のコミットの深さを検出します。リモートバージョンはありませんので、完全コピーを維持できる場合にのみ動作し、次に深さを把握するためにssh
を入力してください。
これにより、クローンを1回だけ行うことができますが、その後、浅いコピーを行う次のすべての時間に質問に回答することができます。
オプション2:
git clone --depth 1
を使用したが、その後git fetch --depth=i+1
に反復することは、実際にテストする価値は良いアイデアです。 (上記の@leonでも提案されています)。
リポジトリの特性に応じて、これは意味があります。
など。あなたは魔法の正しい答えを知っていれば - 完全なローカルリポジトリに
git clone https://github.com/django/django
./oracle.shを引っ張っ - Djangoのリポジトリには23330のコミット(テスト時)
./full.shを持っています。時間の下限。
git clone --depth 10 https://github.com/django/django.git
./search。
git clone --depth 1 https://github.com/django/django.git
cd django
i=1
until git show 5d35181 > /dev/null
do
i=$((i+1))
git fetch --depth=$i
done
オーバーヘッドがある間に、検索が完全なクローンよりも早く出てくる可能性があります。
./full.sh 21.34s
./oracle.sh 1.12s
./search.sh 3.05s
ありがとう@リオンしかし、このことは、リポジトリ全体を一度にクローンするよりも時間がかかり、トラフィックが増える可能性があります – gsf