Git-svn klonu devam ettiriliyor


117

Git-svn'in klonlama işlemini kullanarak bir SVN deposunu klonlamaya başladım. Yaklaşık 6 saatlik ithalattan sonra (bu büyük bir depo), bilgisayarım gitti ve üzerimde uyudu. İlk çalışmayı yeniden yapmadan operasyona devam etmenin bir yolu var mı?

Yanıtlar:


156

git svn fetchBir devam ettirmek için komut git svn clonebirkaç kaynaklar tarafından teyit edilir:

(Bu arada, ilk klon adımı sırasında bağlantınız ölürse veya onu durdurmanız gerekirse, klonu devam ettirmek için geçmişi indirmeye devam etmek için yukarıdaki komutu çalıştırmanız yeterlidir).

Bir hafıza sızıntısı var gibi görünüyor git-svn. git-svnİşlemin boyutu yavaşça büyüdü ve yaklaşık iki hafta sonra 1,2 GB yerleşik boyutuna ulaştı, bu noktada işletim sistemi çatallaşmaya izin vermedi.
Mesele şu ki, bu kılık değiştirmiş bir lütuftu.
Kesilen klonu basit bir " git svn fetch" ile devam ettirebildim ve artık çok daha küçük olan yığınla çok daha hızlı çalıştı.
Bu o kadar işe yaradı ki, her akşam ve her sabah süreci yarıda kesme ve yeniden başlatma alışkanlığı edindim. Birkaç gün sonra yapıldı.

Maceralarınıza git-svnmevcut bir Subversion deposunu klonlayarak başlarsınız :

git svn clone url://path/to/repo -s

-sBayrak deponuzu "gövde, dallar, etiketleri" kuralını kullanır varsayar. Değilse, Git'in onlar hakkında bilgi sahibi olmasını istiyorsanız, hangi dizinlerin dalları ve etiketleri temsil ettiğini manuel olarak belirlemeniz gerekir.

Bu, her bir revizyonu SVN'den alacağı ve yerel olarak işleyeceği için uzun zaman alacaktır. Herhangi bir nedenle durursa, ile devam edebilirsiniz git svn fetch.


1
Sağlanan bazı komut satırı seçeneklerinin git svn clonede (uygun olduğu şekilde) sağlanması gerektiğini düşünüyorum git svn fetch. Örneğin, ben batmıştı -r HEADiçin git svn clonesadece BAŞ SVN revizyon alır. Devam git svn fetchetmek için tüm revizyonları içe aktarmaya başlayan koştum .
amolbk

Bu, her şeyi ilk revizyondan itibaren başlattı .... 10.000 taahhüdüm var! Kaldığı yerden nasıl devam edeceğinize dair bir fikriniz var mı?
Nathan JB

@ NathanJ.Brauer başımın üstünde değil. Yeni bir soru sorabilirsiniz (kullanılan işletim sistemi, git sürümü ve svn sürümü ve bağlam için bu yanıta geri bağlantı)
VonC

1
git svn cloneİşlemi kesintiye uğratarak yanlışlıkla ağ bağlantımı kestim. Devam etmekte git svn cloneolan klonu devam ettirmek için tekrar çalıştırmak göründü. Bunu başka yapan var mı?
Kehlan Krumme

1
@Kehlan Görünüşe göre öyle, zan-xhipe'in aşağıdaki cevabını düşünürseniz
VonC

17

(Umarım) doğru cevabı sağlayan bir blog yazısı buldum .

Görünüşe göre, koşuyor git svn fetch etkin bir şekilde klon işlemini tamamlıyor. İşte umut!


7
git svn rebasegetirdikten sonra işlemi tamamlamak ve gövdeyi yansıtan ana şubeye sahip olmak için kullanmanız gerekecek
Romuald Brunet

İleride başvurmak için blog gönderisine bir bağlantı verebilir misiniz?
jmanning2k

6

VonC, CaptainAwesomePants ve Archi'nin söylediği git svn fetchgibi hile yapıyor. git svn clone url... --authors-file=path/to/fileYazarlardan biri yazarlar dosyasında olmadığı için bir yapıyordum ve klon başarısız oldu. Yazarı dosyaya ekledim ve koştum git svn fetchve kaldığı yerden devam etti ve daha sonra git günlüğüne baktım, görünüşe göre yeni eklenen yazarı commit yazarının adını değiştirmek için kullandı, bu yüzden her şey tatlıydı.


5

En azından 2.1.0'a gittiğinizde, sadece yeniden yayınlayarak devam edebilirsiniz git svn clone

Ancak bu, .git / config dosyasındaki bazı girişleri çoğaltacak ve bunları kaldıracak ve her şey yoluna girecek


From at least git 2.1.0...Bu özelliğin git 1.9.1'de mevcut olup olmadığına dair bir fikriniz var mı?
CivFan

Maalesef artık bunu denemek için svn depom yok.
zan-xhipe

git svn fetchBenim için bir sağlama uyumsuzluğu nedeniyle - ve görünüşte hiçbir BAŞ olmadığı için sıfırlamak mümkün değildi: / - ama bu cezayı çalışır sadece kaldırmak zorunda svn-remote.fetchden.git/config
OLL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.