git-svn: git ile nasıl yeni bir svn dalı oluşturabilirim?


193

Bir svn deposunu izleyen bir git depom var. Kullanarak klonladım --stdlayout.

Üzerinden yeni bir yerel şube oluşturdum git checkout -b foobar

Şimdi bu dalın …/branches/foobarsvn deposuna girmesini istiyorum .

Bunu nasıl yapabilirim?

(çok sayıda araştırmacı metin kırptı. önemsiyorsanız soru geçmişine bakın)


Yanıtlar:


280

Bu sorunun bir süre önce cevaplandığını biliyorum, ancak okuduktan sonra, belirli git svn şube komutunun örneklerini eklemeye yardımcı olabilir ve tipik bir iş akışıyla ilişkilendirebilirim.

Yanıtlanan kch gibi kullanın git svn branch. İşte tam bir örnek, ( -nkuru çalışma testi için not edin ):

git svn branch -n  -m "Branch for authentication bug" auth_bug

Bu iyi giderse, sunucu şöyle bir cevapla cevap verir:

Kopyalama https://scm-server.com/svn/portal/trunk için r8914 en https://scm-server.com/svn/portal/branches/auth_bug ...

Ve -nanahtar olmadan sunucu muhtemelen şöyle bir şey ekler:

Olası şube noktası bulundu: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug , 8914

Şube ebeveyni bulundu: (refs / uzaktan kumandalar / auth_bug)

d731b1fa028d30d685fe260f5bb912cbf59e1971

Takip eden ebeveyn do_switch ile

Başarıyla takip edilen ebeveyn r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8

(Ref / uzaktan kumanda / auth_bug)

En iyi yanı, şimdi uzak dalınıza göre yerel bir şube oluşturabilirsiniz:

git checkout -b local/auth_bug auth_bug

Bu, "adlı yerel dalı kullanıma alma ve oluşturma auth_bugve uzak dalı (son parametre) izlemesini sağlama anlamına gelirauth_bug

Yerel dalınızın ( ) dcommitile şu uzak dalda çalıştığını test edin :--dry-run-n

git svn dcommit -n

Ve SVN sunucusu yeni şube adıyla cevap vermelidir:

Https://scm-server.com/svn/portal/branches/auth_bug taahhüt ediliyor ...


2
Evet, git co, Jesper'in bir git takma adı oluşturduğu anlamına gelir.
Jason Axelson

3
güncellenir ve değiştirilir git co, git checkoutböylece örnek herkes için çalışabilir
Jesper Rønn-Jensen

5
Bu cevaba çoktan oy verdim, ama kaç kez geri gelmeye devam ettiğimi bilmiyorum. Teşekkür ederim!
Ben Doerr

35
Komutta zor bir kısım git-svn branchvar - bu şekilde yeni bir şube oluşturmak için çevrimiçi olmalısınız. Çevrimdışısınız aşağıdakileri yapabilirsiniz: 1. git checkout -b foobar2. 3. hack-hack-kesmek git commit -m "Done foobar". Ve çevrimiçi 1. yaparak bu değişikliği bastığınızda git svn branch foobar2. git branch --set-upstream foobar remotes/foobar3. git svn dcommit.
vadishev

2
2. adımı ile değiştirin git checkout -b foobar-new remotes/foobar. 3. git checkout foobar4. git rebase foobar-new5. Dalın svn dalına bağlı olduğundan emin olmak için test etmek. git svn dcommit --dry-run6. Sonunda aslında taahhüt git svn dcommit7. Geçici şube kaldırmakgit branch -D foobar-new
jjcf89

64

git v1.6.1 git svn branchitibariyle kullanılabilir.

Git belgelerinden:

    şube
        SVN deposunda bir şube oluşturun.

        -m, --mesaj
            Teslim mesajını belirtmeye izin verir.

        -t, --tag
            Branch_subdir yerine tags_subdir komutunu kullanarak bir etiket oluşturun
            git svn init sırasında belirtildi.

Git'in önceki sürümleri bir svn dalı oluşturmanın bir yolunu sunmaz.


4

@kch Ben sadece (7 Aralık 2008) git'in v1.6.1-rc1 etiketini derledi ve git svn branch komutunu ve bunun için belgeleri içeriyor. Yani git'in v1.6.1 sürümü (umarım) bu komutu içermelidir.


gerçekten, ben 1.6.1 şimdi yüklü ve komut kullanılabilir. cevabımı buna göre güncelledi.
kch
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.