2009-10-12 23 views
31

getirme. Ama sıradan bir git svn clone [url] da tüm tarihini klonlar. Bu yüzden işleri hızlandırmak istiyorum. İlk bölüm Git deponuza sadece son revizyonu getirmektir. Öyle gibi yapmak:Git svn klon: erteleme nasıl sıklıkla hemen bir SVN deposuna üzerinde çalışmak istediğiniz durum var düzeltme geçmişinde

URL=http://google-web-toolkit.googlecode.com/svn/trunk/ 
REV=`svn info $URL |grep Revision: | awk '{print $2}'` 
PROJECT_FOLDER=google-web-toolkit-readonly 

git svn clone -r$REV:HEAD $URL $PROJECT_FOLDER 

(daha StackOverflow makalesinde bilgi:.. "How to git-svn clone last n revisions from svn"

Ben ve çalışıyor olduğum ve hemen çalışmaya Bu şekilde Fakat tarihin yerel kopya olmadan

soru, nasıl sonradan (ters sırada) 1000 düzeltmeleri demek, bu parçaları yapılabilir, tercihen? svn deposundan

alma geçmişi Ve do edilir. burada herhangi bir yardım büyük takdir :)

+0

Aşağıdaki çözümü faydalı buldu http://stackoverflow.com/a/2348596/429476 –

cevap

21

Nasıl yapılacağını öğrendim. Hile git svn clone kullanmamak için olduğunu. Bunun yerine, ayrı ayrı git svn init ve git svn fetch kullanın. örnek Modifiye:

URL=http://google-web-toolkit.googlecode.com/svn/trunk/ 
REV=`svn info $URL |grep Revision: | awk '{print $2}'` 
PROJECT_FOLDER=google-web-toolkit-readonly 

mkdir $PROJECT_FOLDER 
cd !$ #goes into dir named $PROJECT_FOLDER 
git svn init -s $URL #-s implies --stdlayout with /trunk /tags /branches 
git svn fetch -r $REV 

# hack, hack, hack 

# or update history (fetch 50 revisions back each loop 
for ((r=$REV; r>0; r-=50)); 
do 
    git svn fetch -r $r:HEAD 
done 
+3

bu işe yaramaz gibi görünmüyor, sadece git svn fetch -r yapmaya çalıştığımda geri geliyor 1000: HEAD – Verhogen

+0

Benim için de değil, aynı zamanda Rob Crawford tarafından önerilen çözüm. Benim için ilk soru cevapsız kalıyor. – sthiers

+2

@verhogen - 'git svn fetch -r 1000: HEAD '," revirde 1000' den başlayarak mevcut HEAD 'a kadar tüm revizyonları getir "anlamına gelir. SVN'nizde 800 revizyon varsa, bu hiçbir şey almayacaktır. 50 bin düzeltmeler olsaydı, istediğinden daha fazlasını getirecekti. –

0

git svn fetch daha önce görmüş revizyonları " hatırlamak" gibi görünmektedir. Yaptığım aralıkları ile başarıya sahip oldum:

git svn fetch -r 0:100 
git svn fetch -r 100:200 
git svn fetch -r 4500 
git svn rebase 
git svn fetch -r 200:300 

Ben boşluklar " yılında dolgu" başladı sonra en son revizyonları getirilen ve. İyi çalışıyor gibi görünüyor.

Jesper - deponuzu bir revizyon 1000 yoksa, o zaman getirmesi için bir şey yok. Kullanmakta olduğunuz revizyon numaralarının geçerli olduğundan emin olun!

+1

Bunun ne anlama geldiğinden emin değil. başarılı olur, ancak git günlüğü size ilk getirme ve ileriden daha fazlasını göstermez. –

5

Önerilen yanıtların hiçbiri işe yaramayacaktır. Bir revizyona sahip git svn fetch, daha önceden klonlanmış olandan daha yeni revizyonları alacaktır. Daha eski bir revizyona geri dönmek ve oradan almak için git svn reset'u kullanabilirsiniz, ancak daha sonra daha yeni revizyonlarınızı tam ağacın üzerine 'graft' etmek için bazı kirli işleri yapmanız gerekecektir (SVN revizyonunun SHA1'i) git revizyonun tüm detaylarına bağlıdır). git neşterleri ile kullanışlı iseniz, bunun için gidin.

Sadece sorunu önlemek için çok daha kolaydır.

  • Son birkaç düzeltmenin başlangıç ​​klonunu yapın, böylece hemen çalışmaya başlayabilirsiniz;
  • Geçmişin başka bir dizini başka bir dizine/git deposuna başlatın;
  • Kısmi geçmişinizde istediğiniz kadar çalışın;
  • Tam klon tamamlandığında, işinizi kısmi havuzdan tam taneye kopyalamak için http://www.sanityinc.com/articles/relocating-git-svn-repositories/ gibi bir yaklaşım kullanın.

Yani, bu kısmi bir cevap - daha sonra nasıl tarihe geçebilirsiniz? Başka bir repoya al ve ihtiyacın olanı kopyala. Ters sırayla 1000 parçalarda yapılabilir mi? Scalpels ve çok sabır ile, olabilir, ama buna değer değil.İleriye doğru koşan tam getirme işlemi, git svn fetch numaralı her bir blok tarafından yakalanan tüm ilk düzeltmelerin üst yükünü geçecek ve düzeltmeler yorucu olacaktır.

İlgili konular