そこで、私はnot bareのリモートリポジトリを作成し(それを読み取るにはredmineが必要なため)、グループと共有するように設定されています(したがって、git init --shared = group)。リモートリポジトリにプッシュすることができましたが、クローンを作成しようとしています。
ネット上で複製すると、次のようになります:
remote: Counting objects: 4648, done.
remote: Compressing objects: 100% (2837/2837), done.
error: git-upload-pack: git-pack-objects died with error.B/s
fatal: git-upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
私は問題なくローカルでクローンを作成でき、「git fsck」を実行しましたが、これは問題ではないと理解しているいくつかのぶら下がり木/ blobのみを報告します。これは何が原因ですか?私はまだクローンからではなく、そこからプルすることができます。リモートgitバージョンが1.5.6.5であるのに対し、ローカルは1.6.0.4であることに注意してください。
リポジトリのローカルコピーのクローンを作成し、.gitフォルダーを削除して新しいリポジトリにプッシュしてから、新しいリポジトリのクローンを作成しようとすると、同じエラーが発生します。失敗するgit-upload-pack ...
編集:pythonモジュールをビルドし、そこに固定しただけなので、他の人も同様にビルドする必要はありませんでした。 Windowsのバイナリを削除し、新しいリポジトリにプッシュすると、再びクローンを作成できますが、おそらくそれが手がかりになります。
この問題を解決した方法は次のとおりです。私のgitデーモンはWindows上で実行され、クライアントは他のコンピューター上にあります。
回避策を見つけました(ただし、Windowsでのみ機能します)。
Cmd.exeをより冗長でgitのデーモンを起動します。
"C:\Program Files\Git\bin\sh.exe" --login -i -c 'git.exe daemon --verbose '
それはgitのbashで直接動作するかどうか、テストしていません。多分それはなります。
次に、(クローン、プル、フェッチなどを開始する前に)ウィンドウでテキストを選択します(注:「クイック編集モード」を有効にする必要があります(cmd.exeで見つけることができます->プロパティ(左上をクリックします) cmdウィンドウの隅)->編集オプション)))でgitデーモンを実行します。それは、そのウィンドウ内の任意の更なるメッセージを印刷するのを防ぐことができます。
Gitデーモンの出力スレッドがそのようにブロックされている場合、エラーは発生しません
私はあなたと同じ問題を抱えています。 iを複製するときのエラーメッセージ:
Cloning into test...
remote: Counting objects: 6503, done.
remote: Compressing objects: 100% (4519/4519), done.
Connection to git.myhost.im closed by remote Host.| 350 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
私の場合、その理由は、リポジトリのサイズ(200M)がgit
サーバーのメモリ(128M)よりも大きいためです。 git
サーバーからクローンを作成するとき、サーバーでコマンドtop
を使用します。これは、メモリ使用量がすぐに128Mを超えていることを示しています。
4Gメモリを備えた別のサーバーを使用すると、git clone
は大丈夫です。サーバーにスワップ領域を追加することもできます。
「git gc」は文句を言いますか?
同じ問題がありました。私の推測では、また、これは私が作成したファイルのテキスト/ CRLFモードを使用しているという事実に関係しているということでした。そして実際、UNIX /バイナリ改行モードにCygwinを切り替えた後、すべてが正常に動作します。
見る:
ところで、ファイルモードを切り替えるには私のための最も簡単な方法は、からスイッチに/ etc/fstabを編集しました
なし/ cygdriveのcygdriveのテキスト、POSIX = 0、ユーザー0 0
に
なし/ cygdriveのcygdriveのバイナリ、POSIX = 0、ユーザ0
また、cygwin gitで問題が発生しました。エラー:fatal: index-pack failed
、
プロジェクト用のマウントを作成し、それをバイナリモードに設定することで解決できました。 /c
がテキストモードに設定されているためです。
/etc/fstab
にcygwinを追加:
c:/work/Projects /projects some_fs binary 0 0
mount -a
を実行して、すべてのドライブをマウントします。
Cygwinを使用するには/projects
にいる必要がありますgit
、/c/work/Projects
は失敗します。
これがあなたのために働くかどうかわからない。
つかいます GIT_TRACE
デバッグ出力を取得するための環境変数。 「1」に設定してstderrにトレースするか、ファイルにトレースする絶対パスに設定します。
私はこの問題を抱えていたか、それに近い状態でしたが、これらのスレッドのいずれにおいても私のケースの解決策が見つかりませんでした。
私の場合、問題はファイアウォールでした。とにかく小さなリポジトリのクローンは機能しましたが、大きなリポジトリは失敗しました。したがって、他に何も役に立たない場合は、ファイアウォール設定を確認する価値があります。
クライアントコンピューターのgitソースをサーバーが実行しているのと同じバージョンにアップグレードしましたが、これで修正されました。
SLES 12 SP3でgit 2.13を実行し、github.comからgithubリポジトリを複製して、この問題に遭遇しました。 gitを最新(当時はv2.21)にアップグレードしようとしましたが、問題は解決しませんでした。提案されたgit configオプション、および他の多くのオプションの設定を試みましたが、運はありませんでした。
最終的に、私は手でやった。
mkdir somedir
git init
GIT用のディレクトリを設定します。git remote add Origin http://github.com/git/git
git fetch
パックを取得します。このタスクはエラーで失敗しましたが、.git/objects/pack/tmp_pack_XXXXXX
cat .git/objects/pack/tmp_pack_XXXXXX | git unpack-objects -r
すべての有効なオブジェクトを抽出します。git fetch
を繰り返して、以前の試みで見逃したもの(ブランチやタグなど)を取得します。それらはすべてアンパックされているため、パック/オブジェクトは必要ありません。git checkout master
、何か実物を指すHEAD
を取得します。私に必要なのかはわかりませんが、お勧めしますgit fsck
およびgit gc
その後、gitをトリガーしてパック/インデックスを再作成します。
Git-daemonの問題は v2.17. で解決されたようです(v2.16.2.1が機能していないことで検証済み)。つまり「出力バッファをロックする」ためにコンソールでテキストを選択する回避策はもう必要ありません。
https://github.com/git/git/blob/v2.17.0/Documentation/RelNotes/2.17.0.txt :
- 「gitデーモン」の各種修正。 (ed15e58efe jk/daemon-fixesを後でmaintにマージします)。
私は同じ問題を抱えているので、git configsを変更するとうまくいきます:
git config --global pack.packSizeLimit 50m
git config --global pack.windowMemory 50m
git config --global core.compression 9