LibreOfficeコードベースをgit cloneしようとしていますが、現時点では約300kbpsのインターネット接続があり、安定しているとは言えません。接続はいつでも元に戻すことができますが、git cloneプロセスはすでに動作を停止しており、再び実行する方法はありません。より障害に強いgitクローンをダウンロードする方法はありますか?
私が考えたオプションの1つは、他の誰かの.gitディレクトリをダウンロードすることですが、それは他の人に過度に依存しており、私にとって最良の解決策ではないようです。
これはまだ準備ができていないと思います。 古いGSoCページ があります。これは、目的の機能を実装する予定でした。あなたがそれをディレクトリとしてダウンロードすることを提案したように、私の最善の策はです。他のプロトコルでダウンロードを再開できると思います。
再起動可能なクローン
大きなリポジトリ(KDE、Open Office、Linuxカーネルなど)のクローンを作成する場合、現在、中断されたクローンを再起動する方法はありません。小さなパイプの端にいるユーザーがデータをダウンロードするにはかなりの時間がかかる場合があり、クローンが途中で中断された場合、ユーザーは現在最初からやり直して再試行する必要があります。一部のユーザーにとって、これは大きなリポジトリのクローンを作成することを不可能にするかもしれません。
目標:git-cloneが以前に失敗したダウンロードをネイティブgit://プロトコルで自動的に再開できるようにします。言語:Cメンター:ショーン・ピアース推奨:ショーン・ピアースon gmane
他の回答の1つでの浅いクローン(git clone --depth=1
)の提案に加えて、プロバイダーと通信できる場合は、誰かが裸のリポジトリを作成できると便利です。 convert ベアリポジトリを完全なリポジトリに簡単にできます。また、浅いクローンは必ずしも役立つとは限らないので、その回答のコメントも読んでください。
頭に浮かぶ2つの解決策(または回避策):
shallow cloneすなわちgit clone --depth=1
を使用し、次にdeepenこのクローンを使用しますgit fetch --depth=N
を使用し、Nを増やします。 git fetch --unshallow
(1.8.0.3以降)を使用して、残りのすべてのリビジョンをダウンロードできます。
誰かにタグ付きリリースまでbundleに依頼してください( git-bundle(1) manpageを参照)。バンドル自体は通常のファイルであり、再開サポート付きのHTTP/FTP、BitTorrent、rsyncなどを介して、任意の方法でダウンロードできます。バンドルからクローンを作成し、構成を修正し、公式のLibreOfficeリポジトリからさらにフェッチできます。
この方法では、サードパーティのサーバーを使用します。
最初にgit clone --bare
を実行し、次にrsync -v -P -e ssh user@Host:repo.git .
を実行します。Windowsでmsysを使用できます。
「他の誰かの.gitディレクトリをダウンロードする」ことができますが、その誰かが公式リポジトリそのものです。 LibreOfficeリポジトリはhttp経由で利用できます。たとえば、build.git
は http://anongit.freedesktop.org/git/libreoffice/build.git/ にあります( http ://cgit.freedesktop.org/libreoffice/ 完全なリストの場合、http URLは各リポジトリのページの下部にあります)。
これらのhttp URLに表示されるのは、.git
ディレクトリ(実際には.git
ディレクトリにあるものだけを含む "裸の"リポジトリ)にすぎません。これは、git://
プロトコル(git daemon
)のサーバーが読み取るディレクトリと同じです。これらのディレクトリのコピーをWebダウンローダー(たとえばwget -m -np
)で作成すると、コピーから複製でき、httpリポジトリから直接複製した場合と同様に機能します。
そのため、できることは、リポジトリごとに、お気に入りのWebダウンローダーでコピーを取得し(破損したダウンロードの再開に関するすべての問題を処理します)、そのコピーからクローンを作成します。更新する場合は、お気に入りのWebダウンローダーを再度使用してコピーを更新し、そのコピーからプルします。これで、お気に入りのWebダウンローダーと同じように、クローンとアップデートが接続不良に対して耐性があります。
" ハトとSDカードの束の帯域幅を過小評価しないでください "は、この答えの最新の形式です。普通のcp -a
itなんでも、それをtarして、いまいましいものをメールしてください。サムドライブをSASEに落とすのに2分の時間を費やすことをいとわない人を見つけます。連絡先を見つけてください、彼らはあなたのためにそれをするかもしれません。
git clone
をコンポーネント部分に分解し、git reset
を使用してファイルの再ダウンロードを防止しましょう。
git clone
が実行されると、最初のいくつかのことは次と同等です。
git init
git remote add Origin <repo_url>
git fetch Origin <branch>
上記の手順を手動で実行し、それらが正しく完了したと仮定した場合、次の手順を必要な回数実行できるようになりました。
git checkout --force <branch>
実行するたびにすべてのファイルがチェックアウトされることに注意してください。ただし、ファイルを再ダウンロードする必要はありません。これにより、時間を大幅に節約できます。
git clone --depth <Number> <repository> --branch <branch name> --single-branch
このコマンドは私を助けます(おかげで Nicola Paolucci )
例えば
git clone --depth 1 https://github.com/gokhanmoral/siyahkernel3 --branch ics --single-branch
サードパーティのサーバーにアクセスできる場合は、そこにクローンを作成してからコピーできます。
この問題も私に噛みつきました。私の場合、回避策があります。場合によっては適用される場合と適用されない場合があります。
リモートシステムでgit操作を開始するために時々携帯電話を使用しています。もちろん私のwi-fiが壊れた場合、セッションは終了し、gitは回復せずにクローン操作全体をドロップします。しかし、リモートシステムからgitマスターへのインターネット接続は安定しているため、クローンを停止する必要はありません。必要なのは、ターミナルセッションからクローンを切り離す常識です。これは、screen/tmuxまたはNohup/daemonを使用して実行できます。私の場合、それはライブウェアの誤動作です。
クローン/深さベースの回答に基づいて-数行のbashで簡単に実行できます...
git clone --depth=1 [email protected]:/var/git/whatever.git <directory> cd <directory> for m in `seq 1 100`;do git fetch --depth=$m;done
CNTRL Zを使用して、クローニングを停止します。ターミナルを閉じないで、システム/ラップトップを休止状態にしてから、fgコマンドで後で続行します。レポfrm githubをクローンしようとしたときに、今日この同じ問題に直面していました。これは私にとって時間の節約になりました。
ngitcached や git-proxy などのgitプロキシを使用します。
私のために働いた最高の回避策:
インターネット接続が悪いと同じ問題に直面しました。だから私は次の解決策を思いついた:
サーバー上に小さなphpファイルを作成して、パッケージをZipファイルとしてダウンロードしました。
<?php
$url = "https://codeload.github.com/CocoaPods/Specs/Zip/master";
file_put_contents("coco.Zip", fopen($url, 'r'));
?>
<a href="coco.Zip">coco.Zip</a>
次に、履歴書をサポートするダウンロードマネージャーを使用してZipファイルをダウンロードします
Hg-git拡張でMercurialを使用してみることができます。
それがうまくいかない場合は、git fetch <commit-id>
を使用してリモートgitリポジトリの一部のみをフェッチできます(空のgitリポジトリにフェッチできます。クローンで作成する必要はありません)。ただし、この方法を使用する場合は、ブランチの構成を修正する(=ローカルおよびリモートの追跡ブランチを作成する)必要があります。
ここに5セントを入れたいです。これは実際に私がこの問題を解決するのを助けたものです
git config --global core.compression 0 git config --global https.postBuffer 524288000 git clone <your_git_http_url_here> --depth 1 git fetch --unshallow git pull --all
これにより、8Mbps adsl接続で〜3GBのレポジトリを複製できました。もちろん、フェッチとプルを数回実行する必要がありましたが、それでも...
サーバーに適切な帯域幅がある(サーバーがある場合)と仮定した場合、別の答えは次のとおりです。
ただし、これは非常に基本的なWeb開発経験でのみ機能します;)また、サーバーにgit.exe
が必要です
ここで同じ問題-私は本当に不安定なインターネット接続を持っていますが、多くの場合10-15 kb /秒以下です:-P
私にとっては、wgetの方法はとてもうまくいきました。緑色のボタン「クローンまたはダウンロード」があるリポジトリサイトに移動し、クリックしてZipダウンロードオプションのリンクをコピーします。
次に、wgetコマンドへのリンクを挿入します。
wget -c -m -np https://github.com/your/repository/archive/master.Zip
チャームのように動作します...