SORU
10 EKİM 2008, Cuma


Gıt-gıt, svn birleştirme sonrasında dcommit tehlikeli mi?

Git-svn denemek için benim motivasyon zahmetsiz ve dallanma birleştirme. Sonra diyor ki: bu adam git-svn(1) fark ettim

"Gıt-birleştirme ya da git-Çek çalışmasını dcommit düşündüğünüz bir şube üzerinde tavsiye edilmez. Subversion makul veya yararlı herhangi bir şekilde birleştirir temsil etmez; yani kullanıcılar Subversion kullanarak yaptığınız tüm birleştirir bakın. Birleştirme veya SVN bir şube bir aynasıdır git şubeden çekerseniz ayrıca, dcommit yanlış şubeye işleyebilir."

Bu veremem svn/trunk (veya şube) yerel bir şube oluşturmak, kesmeye, geri svn/trunk birleştirme, dcommit o zaman anlamına mı geliyor? Svn svn kullanıcıları ön 1.5 birleştiren aynı pisliği görecek anladığım kadarıyla.x her zaman olmuştur, ama başka bir dezavantajı var mı? Bu son cümle beni çok endişelendiriyor. İnsanlar rutin olarak bu tür şeyler yaparsın?

CEVAP
21 Kasım 2010, Pazar


Aslında, git --no-ff seçeneği ile daha iyi bir şekilde birleştirme buldum. Tüm bu squash tekniği ben daha önce kullanılan artık gerekmemektedir.

Benim yeni iş akışı aşağıdaki gibidir

  • Ben bir "master" dalındaki tek şube benim dcommit ve o klon SVN deposuna (-s varsayalım bir standart SVN düzeni depo trunk/, branches/ tags/):

    git svn clone [-s] <svn-url>
    
  • Yerel bir şube üzerinde çalışıyorum "" (-b şube oluşturur"") çalışır

    git checkout -b work
    
  • içine "(-s-kapalı oturum sizin işlemeye mesaj) Şubesi." iş tamamlama yerel olarak Devamı, 3 yerel tamamlar yaptığını düşündüm

    ...
    (work)$> git commit -s -m "msg 1"
    ...
    (work)$> git commit -s -m "msg 2"
    ...
    (work)$> git commit -s -m "msg 3"
    

Şimdi SVN sunucuya taahhüt istiyorum

  • [Sonunda] zula değişiklikleri görmek istemiyorum işlenmiş SVN sunucusu (genellikle yorumladı kodu ana dosya sadece sen istiyorsun diye hızlandırmak derleme ve odak noktası verilen bir özellik)

    (work)$> git stash
    
  • SVN deposu ile ana dalda (SVN sunucusundan güncellemek için rebase)

    (work)$> git checkout master
    (master)$> git svn rebase
    
  • iş şubesine gidip usta ile rebase

    (master)$> git checkout work
    (work)$> git rebase master
    
  • Her şey çok güzel, mesela: kullanmasını sağlamak

    (work)$> git log --graph --oneline --decorate
    
  • Şimdi "usta" --no-ff Bu harika seçeneği kullanarak. "şube iş yerinden üç tamamlar birleştirme zamanı

    (work)$> git checkout master
    (master)$> git merge --no-ff work
    
  • Günlükleri: durumu fark edebilirsiniz

    (master)$> git log --graph --oneline --decorate
    * 56a779b (work, master) Merge branch 'work'
    |\  
    | * af6f7ae msg 3
    | * 8750643 msg 2
    | * 08464ae msg 1
    |/  
    * 21e20fa (git-svn) last svn commit
    
  • Şimdi muhtemelen (amend) son SVN senin elemanlar için taahhüt düzenlemek istiyorum (aksi takdirde sadece mesajı ile tek bir taahhüt görecekler "şube iş" .' Birleştirme

    (master)$> git commit --amend
    
  • Sonunda SVN sunucusuna kaydetme

    (master)$> git svn dcommit
    
  • İşe gidip saklanmış dosyalar: sonunda senin kurtarmak

    (master)$> git checkout work
    (work)$> git stash pop
    

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008