227

LibreOfficeコードベースのgitcloneを試みていますが、現時点では約300kbpsのインターネット接続があり、安定しているとは言えません。いつでも接続を取り戻すことができますが、git cloneプロセスはすでに機能を停止しており、再度実行する方法はありません。より障害に強いgitクローンをダウンロードする方法はありますか?

私が自分で考えたオプションの1つは、他の人の.gitディレクトリをダウンロードすることですが、それは他の人に過度に依存しており、私にとって最善の解決策とは思えません。

4

17 に答える 17

153

頭に浮かぶ2つの解決策(またはむしろ回避策)は次のとおりです。

  • 浅いクローンを使用します。つまりgit clone --depth=1Nを増やしながら、を使用してこのクローンを深めます。(1.8.0.3以降)を使用して、残りのすべてのリビジョンをダウンロードできます。git fetch --depth=Ngit fetch --unshallow

  • タグ付けされたリリースまでバンドルするように誰かに依頼します( git-bundle(1)のマンページを参照)。バンドル自体は通常のファイルであり、再開をサポートするHTTP / FTP、BitTorrent、rsyncなどを介してダウンロードできます。バンドルからクローンを作成し、構成を修正し、公式のLibreOfficeリポジトリからさらにフェッチすることができます。 。

于 2010-10-18T09:07:12.733 に答える
78

これはまだ準備ができていないと思います。目的の機能を実装することを計画していた古いGSoCページがあります。私の最善の策は、あなたが提案したように、それをディレクトリとしてダウンロードすることです。他のプロトコルでダウンロードを再開できると思います。

再起動可能なクローン

大規模なリポジトリ(KDE、Open Office、Linuxカーネルなど)のクローンを作成する場合、現在、中断されたクローンを再起動する方法はありません。小さなパイプの端にいるユーザーがデータをダウンロードするのにかなりの時間がかかる場合があります。クローンが途中で中断された場合、ユーザーは現在、最初からやり直して再試行する必要があります。一部のユーザーにとって、これにより大きなリポジトリのクローンを作成できなくなる可能性があります。

目標:git-cloneが、ネイティブのgit://プロトコルを介して以前に失敗したダウンロードを自動的に再開できるようにします。言語:Cメンター:Shawn Pearce提案者:Shawn Pearce on gmane


アップデート

他の回答の1つにある浅いクローン作成(git clone --depth=1)の提案に加えて、プロバイダーと通信できる場合、誰かがあなたのためにベアリポジトリを作成できると役立つ場合があります。ベアリポジトリを完全リポジトリに簡単に変換できます。また、浅いクローンが常に役立つとは限らないため、その回答のコメントを読んでください。

于 2010-10-17T19:28:09.323 に答える
16

この方法では、サードパーティのサーバーを使用します。

まず、実行して git clone --bareから、 rsync -v -P -e ssh user@host:repo.git . Windowsでmsysを使用できます。

于 2012-09-25T10:54:54.670 に答える
14

伝書鳩とSDカードのバンドルの帯域幅を過小評価しないでください」は、この答えの現代的な形です。タールを塗って、古くcp -aして、何でも、そしていまいましいものを郵送してください。サムドライブをSASEにドロップするのに2分かかることをいとわない人を見つけてください。そこに連絡先を見つけてください、彼らはあなたのためにそれをするかもしれません。

于 2013-11-13T00:44:49.233 に答える
11

「他の誰かの.gitディレクトリをダウンロードする」ことはできますが、それを使用すると、他の誰かが公式リポジトリ自体になります。LibreOfficeリポジトリはhttpから入手できます。たとえば、http://anongit.freedesktop.org/git/libreoffice/build.git/にあります(完全なリストについてbuild.gitは、http ://cgit.freedesktop.org/libreoffice/を参照してください。 http URLは、各リポジトリのページの下部にあります)。

これらのhttpURLに表示されるのは、.gitディレクトリ(実際には、ディレクトリにあるものだけを含む「ベア」リポジトリ)にすぎません.gitgit://これは、プロトコル(git daemon)のサーバーが読み取るのと同じディレクトリです。これらのディレクトリのコピーをWebダウンローダー(たとえばwget -m -np)で作成すると、コピーからクローンを作成でき、httpリポジトリから直接クローンを作成した場合と同様に機能します。

つまり、リポジトリごとに、お気に入りのWebダウンローダー(壊れたダウンロードの再開に関するすべての問題を処理します)でそのコピーを取得し、そのコピーからクローンを作成します。更新する場合は、お気に入りのWebダウンローダーを再度使用してコピーを更新し、そのコピーからプルします。これで、クローンと更新は、お気に入りのWebダウンローダーと同じように接続不良に対して耐性があります。

于 2011-06-12T21:14:14.603 に答える
8

ここに5セント入れたいと思います。これは実際に私がこの問題を解決するのに役立ったものです

  • 圧縮をオフにします
  • http.postBufferを増やします
  • 部分的なクローンを作成する
  • クローンディレクトリに移動し、残りのクローンを取得します
  • 残りを引っ張る
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のリポジトリのクローンを作成するのに役立ちました。もちろん、フェッチとプルを数回実行する必要がありましたが、それでも...

于 2019-04-19T07:47:56.940 に答える
7

バッファサイズを増やすと、この問題に役立ちます。手順に従ってください。

  1. ターミナルまたはGitBashを開き、cdリポジトリのクローンを作成する場所に移動します。

  2. 圧縮を0に設定します

    git config --global core.compression 0
    
  3. postBufferサイズを設定する

    git config --global http.postBuffer 1048576000
    
  4. maxRequestBufferサイズを設定する

    git config --global http.maxRequestBuffer 100M
    
  5. 今すぐクローンを開始します

    git clone <repo url>
    
  6. クローンが完了するまで待ちます。

于 2020-05-19T12:19:06.940 に答える
6
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
于 2014-10-21T14:12:29.120 に答える
6

git cloneその構成要素に分解し、git checkoutファイルの再ダウンロードを防ぐために使用してみましょう。

実行するgit cloneと、最初のいくつかのことは同等です

git init
git remote add origin <repo_url>
git fetch origin <branch>

上記の手順を手動で実行し、それらが正しく完了したと仮定すると、次の手順を必要な回数だけ実行できるようになります。

git checkout --force <branch>

実行するたびにすべてのファイルがチェックアウトされますが、ファイルを再ダウンロードする必要がないため、時間を大幅に節約できることに注意してください。

于 2017-09-08T02:09:18.557 に答える
5

サードパーティのサーバーにアクセスできる場合は、そこにクローンを作成してからコピーできます。

于 2010-10-17T19:26:37.387 に答える
4

ngitcachedgit-proxyなどのgitプロキシを使用します。

于 2014-07-31T21:31:19.473 に答える
3

この問題も私を悩ませました。私の場合、回避策があります。それはあなたの場合に当てはまるかもしれませんし、当てはまらないかもしれません。

私は時々携帯電話を使ってリモートシステムでgit操作を開始しています。もちろん私のwi-fiが壊れた場合、セッションは終了し、gitは回復せずにクローン操作全体をドロップします。しかし、リモートシステムからgitマスターへのインターネット接続は安定しているため、クローンを停止する必要はありません。必要なのは、ターミナルセッションからクローンを切り離すための常識です。これは、screen/tmuxまたはnohup/daemonを使用して実行できます。ですから、私の場合はライブウェアの誤動作です。

于 2012-07-14T16:47:32.293 に答える
2

CNTRLZを使用してクローン作成を停止します。ターミナルを閉じないでください。システム/ラップトップを休止状態にして、後でfgコマンドで続行してください。私は今日、リポジトリfrm githubのクローンを作成しようとしているときに、これと同じ問題に直面していました。これは私にとって時間の節約になりました。

于 2013-10-26T19:17:14.427 に答える
1

ここでも同じ問題-私は本当に不安定なインターネット接続を持っており、多くの場合10〜15kb/秒以下です:-P

私にとって、wgetの方法は非常にうまく機能しました。

緑色のボタン「クローンまたはダウンロード」があるリポジトリサイトに移動し、それをクリックして、ZIPダウンロードオプションのリンクをコピーします。

次に、wgetコマンドへのリンクを挿入します。

wget -c -m -np https://github.com/your/repository/archive/master.zip

チャームのように機能します...

于 2018-10-02T07:53:53.323 に答える
0

サーバーが帯域全体で良好であると仮定した場合(そしてサーバーがある場合)、別の答えは次のとおりです。

  1. サーバーサイドGitラッパーを使用して独自のサーバーを作成する
  2. サーバーにクローンします
  3. サーバーサイドのZipアーカイバを使用して圧縮する
  4. サーバーサイドレジュームサポートからダウンロードします

しかし、これは非常に基本的なWeb開発の経験でのみ機能します;)そしてまたあなたgit.exeはあなたのサーバーで必要です

于 2018-03-12T04:57:26.597 に答える
0

私のために働いた最良の回避策:

私は悪いインターネット接続で同じ問題に直面しました。だから私は次の解決策を思いついた:

サーバー上に小さな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ファイルをダウンロードします。

于 2019-07-26T07:51:42.030 に答える
-1

hg-git拡張子でMercurialを使用してみることができます。

それが機能しない場合git fetch <commit-id>は、リモートgitリポジトリの一部のみをフェッチするために使用できます(空のgitリポジトリにフェッチできます。クローンを使用して作成する必要はありません)。ただし、このアプローチを使用する場合は、ブランチ構成を修正する(=ローカルおよびリモートの追跡ブランチを作成する)ことができます。

于 2010-10-18T08:33:40.150 に答える