SORU
28 NİSAN 2009, Salı


Çatal ve senkronize Google Code Subversion GitHub içine depo

Nasıl erişmek için, GitHub deposuna yazmak zorunda olmadığımı ve Google Code Subversion bir depo ile senkronize çatal alabilir miyim?

Git benim depo içinde kendi özelliklerini geliştirmek mümkün olmak istiyorum, ama aynı zamanda Google Code Subversion deposuna karşı senkronize etmek istiyorum. Getirmek için Google Kod proje tarafı giderir.

Git-svn biliyorum ve daha önce yukarı ve üzerinde tam kontrol vardı depoyu bir Bozulma yönünde hareket etmesi için kullanılır. Ama Google Code Subversion ile senkronize depo tutmak nasıl bilmiyorum.

CEVAP
28 NİSAN 2009, Salı


Git-svn uzak şube oldukça düzenli Gıt aynı uzak. Yerel depo olarak git-svn senin klon var ve değişiklikleri GitHub için dışarı doğru itin. Git umursamıyor. Sen git-svn senin klon oluşturmak ve aynı değişiklikleri GitHub için dışarı itmek, Google Kod deposu resmi olmayan bir ayna var. Geri kalan vanilya Git.

git svn clone http://example.googlecode.com/svn -s
git remote add origin git@github.com:example/example.git
git push origin master

Bu şimdi ara sıra Gıt ile Subversion deposu senkronize etmek zorunda kalacak. Bir şey gibi görünecektir:

git svn rebase
git push

Gitk ya da her neyse, bu, bu gibi bir şey olacaktır:

o [master][remotes/trunk][remotes/origin/master]
|
o
|
o

Ve çalıştırdığınızda git svn rebase Bu olurdu:

o [master][remotes/trunk]
|
o
|
o [remotes/origin/master]
|
o
|
o

Şimdi git push Bu bastıracağını çalışan GitHub, taahhüt eder[uzaktan kumanda/origin/master]şube var. Ve bu senaryo için ilk ASCII sanat şemada olurdu.

Şimdi sorun, nasıl yaptığınız değişiklikleri çalışma içine girdi. Bu fikir, şimdiye kadar git-svn-rebase-ing ve git-iterek aynı dalın üzerine işlemek yok. Yaptığınız değişiklikler için ayrı bir şube gerekir. Aksi takdirde, Git deposu, klonlar herkes üzgün olan Subversion olanlar, üzerinde yaptığınız değişiklikleri rebasing sona erecekti. Beni takip eder misin? Bir şube oluşturmak TAMAM, bu yüzden, bırakalım "" vardır. Ve bir taahhüt olun ve fazla şube için GitHub için dışarı itmek. Senin gitk bu gibi bir şey olacaktır

o [features][remotes/origin/features]
|
o
|
o [master][remotes/trunk][remotes/origin/master]
|
o

Burada özellikleri tamamlar birkaç Google Code şube, sağ önde şubesi var? Google kodundan yeni şeyler eklemek istediğinizde ne olacak? git svn rebase ilk çalıştırma ve bu olsun istiyorum:

                           o [features][remotes/origin/features]
[master][remotes/trunk] o  |
                        |  o
                        o /
                        |/
                        o[remotes/origin/master]
                        |
                        o

17 ** efendim, tahmin edersiniz[uzaktan kumanda/origin/master]usta aynı noktada olmak. Ama özellik Şubesi değişiklikler yok. Seçimlerinizi şimdi özellikleri, ya da rebase özellikleri içine ana birleştirme. Birleştirme bu şekilde görünecektir

git checkout features
git merge master 

            o [features]
           /|
          / o [remotes/origin/features]
[master] o  |
         |  o
         o /
         |/
         o
         |
         o

Sonra GitHub özellikleri dışarı itin. Master için uzaktan kumanda alanı kazanmak için terk ettim, aynı noktada gibi olurlardı[ana].

Rebase yaklaşımdır biraz daha kötü - daha iyi mi olurdu bas --güç olarak bas olmadığını ileri birleştirme (edersin çekme özellikleri şubesinden altında birisi vardı klonlanmış). Gerçekten TAMAM bu sayılmaz, ama kimse Eğer kararlı iseniz sizi durduramaz. Bazı şeyler çok daha kolay, biraz elden şeklinde yamalar memba kabul edilmek gibi. Çatışmalar, sadece rebase --upstreamed yamalar atlayabilirsiniz kafa bulmaya gerek tasarruf ederlerdi. Her neyse, bir rebase gibi olacaktır:

git rebase master features

         o [features]
         |
         o
         |  o [remotes/origin/features]
[master] o  |
         |  o
         o /
         |/
         o
         |
         o

Ve sonra 20* *o olurdu. Kaba kuvvet uygulamak gerekir neden görebilirsiniz, geçmişinden gelen eski büyük bir ayrılık vardır[uzaktan kumanda/menşe/özellikler]post-rebase yeni akım[özellikler].

Bu çalışır, ama çok fazla çaba gerektiriyor. Eğer düzenli bir katılımcı olacak iseniz, en iyi bahis bir süre için bu gibi işler, bazı yamalar Yukarı gönderin ve eğer Subversion erişimi taahhüt almaya çalış. Bu, belki de başarısız değişiklikleri GitHub için dışarı itmek yok. Onlara yerel ve akıntıya karşı yine de onları kabul etti.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • Madeon

    Madeon

    31 Ocak 2010
  • pjtoohot

    pjtoohot

    15 NİSAN 2008