Saya mencoba untuk mengkloning basis kode LibreOffice, tetapi saat ini saya memiliki koneksi internet sekitar 300kbps dan itu sama sekali tidak stabil. Saya bisa mendapatkan koneksi kembali kapan saja, tetapi kemudian proses klon git sudah berhenti bekerja, dan tidak ada cara untuk membuatnya berjalan lagi. Apakah ada cara untuk mengunduh git clon yang lebih tahan terhadap kegagalan?
Salah satu opsi yang saya anggap sendiri adalah mengunduh direktori .git orang lain, tetapi itu terlalu bergantung pada orang lain dan sepertinya bukan solusi terbaik bagi saya.
depth -1
solusinya?kernel/git/torvalds/linux.git
. Dan klon git yang dapat dilanjutkan sedang dibahas (Maret 2016). Lihat stackoverflow.com/a/29192890/6309 .git init
, mengatur remote dan kemudian melakukan pengambilan sampai berhasil melakukan triknya? Saya tidak berpikir mengambil sampah berhasil mengunduh objek jika koneksi gagal.Jawaban:
Saya kira ini belum siap. Ada halaman GSoC lama yang berencana mengimplementasikan fitur yang Anda inginkan. Taruhan terbaik saya adalah, seperti yang Anda sarankan unduh sebagai direktori. Saya berasumsi Anda dapat melanjutkan unduhan melalui protokol lain.
Memperbarui
Seiring dengan
git clone --depth=1
saran kloning dangkal ( ) di salah satu jawaban lain, akan sangat membantu jika seseorang dapat membuat repositori kosong untuk Anda jika Anda dapat berkomunikasi dengan penyedia. Anda dapat dengan mudah mengonversi repositori kosong ke repositori penuh. Baca juga komentar dalam jawaban itu karena klon yang dangkal mungkin tidak selalu membantu.sumber
--depth 1
dan--unshallow
tampaknya telah bertahan bertahun-tahun penggunaan.Dua solusi (atau lebih tepatnya penyelesaian ) yang muncul di pikiran adalah:
Gunakan dangkal clone yaitu
git clone --depth=1
, kemudian memperdalam clone ini menggunakangit fetch --depth=N
, dengan meningkatnya N . Anda dapat menggunakangit fetch --unshallow
(sejak 1.8.0.3) untuk mengunduh semua revisi yang tersisa.Minta seseorang untuk membundel ke beberapa rilis yang ditandai (lihat manual git-bundle (1) ). Bundel itu sendiri adalah file biasa, yang dapat Anda unduh dengan cara apa pun, melalui HTTP / FTP dengan dukungan resume, melalui BitTorrent, melalui rsync, dll. Anda dapat membuat klon dari bundel, memperbaiki konfigurasi, dan melakukan pengambilan lebih lanjut dari repositori LibreOffice resmi .
sumber
for m in $(seq 1 50);do git fetch --depth=$[m*100];done
bekerja untuk saya, terima kasih! :)Metode ini menggunakan server pihak ke-3.
Pertama, lakukan
git clone --bare
, makarsync -v -P -e ssh user@host:repo.git .
Anda dapat menggunakan msys di Windows.sumber
rsync(1)
dengan cara GitHub saya melihat Anda "? Atau, apakah maksud Anda pertama-tamagit clone
pada server pihak ketiga dan kemudian rsync ke mesin lokal?" Jangan pernah meremehkan bandwidth merpati pos dan seikat kartu SD " akan menjadi bentuk modern dari jawaban ini. Tarakan, tua
cp -a
itu, apa pun, dan kirimkan barang sialan itu. Temukan seseorang yang bersedia mengambil dua menit dari waktu mereka untuk memasukkan thumb drive ke SASE. Temukan kontak, di sana, mereka bahkan mungkin melakukannya untuk Anda.sumber
Anda dapat "mengunduh direktori .git orang lain", tetapi dengan itu orang lain menjadi repositori resmi itu sendiri. Repositori LibreOffice tersedia melalui http, misalnya mereka
build.git
ada di http://anongit.freedesktop.org/git/libreoffice/build.git/ (lihat http://cgit.freedesktop.org/libreoffice/ untuk daftar selengkapnya, URL http ada di bagian bawah setiap halaman repositori).Apa yang Anda lihat di URL http ini tidak lebih dari sebuah
.git
direktori (sebenarnya repositori "telanjang", yang hanya memiliki apa yang akan Anda temukan di.git
direktori). Ini adalah direktori yang sama dengan yang dibaca oleh server untukgit://
protokol (git daemon
). Jika Anda membuat salinan direktori ini dengan pengunduh web (misalnyawget -m -np
), Anda dapat mengkloning dari salinan Anda dan itu akan berfungsi juga jika Anda telah mengkloning langsung dari repositori http.Jadi, yang dapat Anda lakukan adalah: untuk setiap repositori, dapatkan salinannya dengan pengunduh web favorit Anda (yang akan menangani semua masalah dengan melanjutkan kembali unduhan yang rusak), dan tiruan dari salinan itu. Saat Anda ingin memperbarui, gunakan lagi pengunduh web favorit Anda untuk memperbarui salinan Anda, dan tarik dari salinan itu. Sekarang klon dan pembaruan Anda tahan terhadap koneksi yang buruk seperti pengunduh web favorit Anda.
sumber
Mari kita memecah
git clone
menjadi bagian-bagian komponen itu, dan gunakangit checkout
untuk mencegah mengunduh ulang file.Saat
git clone
dijalankan, beberapa hal pertama yang dilakukannya setaraJika Anda menjalankan langkah-langkah di atas secara manual, dan dengan asumsi mereka telah menyelesaikannya dengan benar, Anda sekarang dapat menjalankan yang berikut ini sebanyak yang diperlukan:
Perhatikan bahwa ini akan memeriksa semua file setiap kali dijalankan, tetapi Anda tidak perlu mengunduh ulang file , yang dapat menghemat banyak waktu.
sumber
Jika Anda memiliki akses ke server pihak ketiga, Anda bisa mengkloning di sana dan kemudian menyalin.
sumber
Perintah ini membantu saya (Terima kasih kepada Nicola Paolucci )
sebagai contoh
sumber
Membangun berdasarkan jawaban klon / kedalaman - beberapa baris bash menyelesaikan ini dengan mudah ...
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
sumber
seq 1 10 1000
; lakukan git pull --depth = $ m; dilakukan untuk mendapatkan langkah-langkah 10. PS Jika saya melakukan Ctrl + CI kehilangan paket saat ini saja, dan saya bisa mulai dari awal lagiMasalah ini menggigit saya juga. Dalam kasus saya ada penyelesaian. Ini mungkin atau mungkin tidak berlaku dalam kasus Anda.
Saya menggunakan ponsel kadang-kadang untuk memulai operasi git pada sistem jarak jauh. Jika wi-fi saya rusak tentu saja sesi berakhir dan git menjatuhkan seluruh operasi klon tanpa pulih. Tapi karena koneksi internet dari sistem remote saya ke git master solid, klon tidak perlu berhenti. Yang saya butuhkan adalah akal sehat untuk melepaskan klon dari sesi terminal. Ini dapat dilakukan dengan menggunakan layar / tmux atau nohup / daemon. Jadi ini merupakan kegagalan fungsi perangkat hidup dalam kasus saya.
sumber
Gunakan proxy git, seperti ngitcached atau git-proxy .
sumber
Gunakan CNTRL Z untuk menghentikan kloning. Jangan tutup terminal, letakkan sistem / laptop dalam mode hibernasi dan kemudian lanjutkan dengan perintah fg. Saya menghadapi masalah yang sama hari ini ketika mencoba untuk mengkloning repo frm github. Ini datang sebagai penghemat waktu bagi saya.
sumber
Meningkatkan ukuran buffer akan membantu Anda dalam masalah ini. Ikuti saja langkah-langkahnya.
Langkah:
1. Buka terminal atau Git Bash dan dengan "cd" pergi ke lokasi di mana Anda ingin mengkloning repo.
2. Atur kompresi ke 0
3. Atur ukuran postBuffer
4. Atur ukuran maxRequestBuffer
5. Sekarang mulai klon
6.Tunggu sampai klon selesai.
Terima kasih. Selamat Coding !!!
sumber
Saya ingin menaruh 5 sen saya di sini. Inilah yang sebenarnya membantu saya memecahkan masalah ini
Ini membantu saya untuk mengkloning ~ 3GB repo melalui koneksi adsl 8Mbps, tentu saja saya harus melakukan pengambilan dan tarik beberapa kali, tetapi masih ...
sumber
jika kami menganggap server memiliki lebar pita yang baik (dan Anda memiliki server) jawaban lain adalah:
tetapi ini hanya bekerja dengan pengalaman pengembangan web yang sangat mendasar;) dan juga Anda butuhkan
git.exe
di server Andasumber
Masalah yang sama di sini - Saya memiliki koneksi internet yang sangat rapuh dengan sering tidak lebih dari 10-15 kb / detik :-P
Bagi saya cara wget bekerja dengan sangat baik. Buka situs repositori tempat tombol hijau "clone or download" berada, klik dan salin tautan opsi unduhan ZIP.
Kemudian masukkan tautan ke perintah
wget : wget -c -m -np https://github.com/your/repository/archive/master.zip
Bekerja seperti pesona ...
sumber
solusi terbaik yang berhasil untuk saya:
Saya menghadapi masalah yang sama dengan koneksi internet yang buruk. Jadi saya datang dengan solusi berikut:
Membuat file php kecil di server saya untuk mengunduh paket sebagai file zip:
kemudian unduh file zip menggunakan manajer unduhan yang mendukung resume
sumber
Anda dapat mencoba menggunakan lincah dengan ekstensi hg-git.
Jika itu tidak berhasil, Anda dapat menggunakan
git fetch <commit-id>
untuk mengambil hanya bagian dari repositori git jarak jauh (Anda dapat mengambil ke dalam repositori git kosong, tidak perlu membuatnya dengan klon). Tetapi Anda mungkin memperbaiki konfigurasi cabang (= membuat cabang pelacakan lokal dan jarak jauh) ketika Anda menggunakan pendekatan ini.sumber