Nasıl şube oluştururum?


Yanıtlar:


349

Subversion'da dallanma, çok hafif ve verimli bir kopyalama olanağı ile kolaylaştırılır.

Dallanma ve etiketleme etkili bir şekilde aynıdır. Depodaki tüm klasörü svn copykomutu kullanarak depodaki başka bir yere kopyalamanız yeterlidir .

Temel olarak bu, bir klasörün kopyalanmasının ne anlama geldiği anlamına gelir - yedekleme, etiket, şube veya başka bir şey olsun. Şeyler hakkında nasıl düşünmek istediğinize bağlı olarak (normalde geçmişte hangi SCM aracını kullandığınıza bağlı olarak) tarzınızı desteklemek için deponuzda bir klasör yapısı ayarlamanız gerekir.

Ortak stilleri adı verilen depo üstündeki klasörlerin bir grup var için vardır tags, branches, trunksize bütün kopyalamak için izin verir - vs. trunkiçine (veya alt kümelerini) tagsve / veya branchesklasörlerin. Birden fazla projeniz varsa, bu tür bir yapıyı her proje altında çoğaltmak isteyebilirsiniz:

Konsepte alışmak biraz zaman alabilir - ama işe yarıyor - sadece sizin (ve ekibinizin) kullanacağınız sözleşmeler konusunda net olduğunuzdan emin olun. Ayrıca, iyi bir adlandırma kuralına sahip olmak iyi bir fikirdir - dalın / etiketin neden yapıldığını ve hala uygun olup olmadığını söyleyen bir şey - kullanılmayan dalları arşivleme yollarını düşünün.


211
"svn copy" avantajı dallanmadan önceki tarihi koruyacaktır. Manuel olarak başka bir dizine kopyalanmayacaktır.
WhyNotHugo

5
Ayrıca, "gövde" nin alt dizinlerini etiketlemenin veya dallandırmanın genellikle kötü bir fikir olduğunu unutmayın. Bu, hangi alt dizinin dallandığını takip etmeyi zorlaştırır ve çoğu araç bu dallar tarafından karıştırılacaktır (örneğin, anahtarları değiştirmek, IDE'leri karıştıracak ve araçları oluşturacak olan WC değişikliklerinin dizin yapısı anlamına gelecektir). Sadece her zaman "gövde" dal.
sleske

1
@Will Aslında svn cpucuz kopyalar, bu mu kullanır değil dallanma sırasında gerçek dosyaları kopyalamak. Bkz svnbook.red-bean.com/tr/1.1/ch04s02.html
Walty Yeung

607

Aşağıdaki svn copykomutu kullanarak yeni bir şube oluşturun :

$ svn copy svn+ssh://host.example.com/repos/project/trunk \
           svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
      -m "Creating a branch of project"

24
Daha sonra, yeni oluşturulan dalda çalışmaya başlamak için ( svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .geçerli kasayı yeni şubeye svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCHgeçirmek istiyorsanız ) veya (ayrı bir dizinde yeni dal olmasını istiyorsanız) kullanın.
Jakub Narębski

3
Not: bazı durumlarda kullanılması gerekir--parentsile seçeneğiylesvn copy!
Jakub Narębski

1
nedense bu cmd kullandım ve işe yaramadı; ama svn + ssh'yi sadece https olarak değiştirdiğimde işe yaradı. Yanlış bir şey mi yaptım? svn + ssh ne anlama geliyor? Teşekkürler!
Aviel Gross

önce şubenizde yeni bir dizin oluşturmanız gerekir -> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "tüm şubeleri tutmak için şube dizinini oluştur"
Silvio Troia

-mSeçeneği atlarsam şöyle diyor svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist. İle -mdiyor svn: E205009: Local, non-commit operations do not take a log message or revision properties. (Adresleri değiştirdim, ancak bunlar, yeni şube dizini ve bir nedenden ötürü SVN'nin neden olduğu tüm yol + url dışında hatada birleştirildi) .
Hi-Angel

33

Repo ile https üzerinden erişebiliyorsanız, dallamak için bu komutu kullanabilirsiniz ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"

26
svn cp /trunk/ /branch/NEW_Branch

Bagajda bazı yerel değişiklikleriniz varsa değişiklikleri Rsyncsenkronize etmek için kullanın

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch

2
rsyncBu şekilde kullanılmasına gerek yoktur . svn cpyerel değişiklikleri de kopyalar.
Kevin Panko

@KevinPanko Taahhüt edilmeyen değişiklikleri kopyalamaz.
Parag Bafna

4
Bu, svn, sürüm 1.8.5 ile onaylandı
Kevin Panko

Bunu merak ediyorum. Bu en kolay seçenek gibi görünüyor ve AFAI hatırlıyorum, 3 yıl önce SVN ile çalışırken yaptığım şey bu. Ancak, bu ve doğrudan sunucu URL'leriyle çalışanlar arasındaki fark nedir?
oligofren

@KevinPanko Yeni oluşturulan dosyaları da kopyalayıp kopyalamadığını biliyor musunuz?
John Hamilton

16

Bir gövde adından ("TEST" olarak) bir şube oluşturmak istediğinizi varsayalım:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST


13

Yeni SVN kullanıcıları için en iyi ipucu; bu, doğru URL'leri hızlı bir şekilde almanıza yardımcı olabilir.

svn infoGeçerli kullanıma alma dalı hakkında yararlı bilgileri görüntülemek için çalıştırın .

URL (kök klasörde svn çalıştırırsanız) size kopyalamanız gereken URL'yi vermelidir.

Ayrıca yeni oluşturulan dala geçmek için şu svn switchkomutu kullanın:

svn switch http://my.repo.url/myrepo/branches/newBranchName

3
^ Depo Kökü yerine ^ da kullanabilirsiniz
chim

11

Şubenizi birleştirmeyi planlıyorsanız, buna bakmanızı şiddetle tavsiye ederim:

Svnmerge.py

Subversion 1.5'in birleştirme izlemesinden daha fazlasını oluşturduğunu duyuyorum, bununla ilgili hiçbir deneyimim yok. Projem 1.4.x ve svnmerge.py hayat kurtarıcı!


6
  • Mevcut projenizin dışında yeni bir klasör oluşturun. İstediğiniz adı verebilirsiniz. (Örnek: "Özelleştirme" adlı bir projeniz için bir kasanız var. "Project1", "Project2" gibi birçok projeniz var .... Ve "Project1" dalını oluşturmak istiyorsunuz. Önce " Özelleştirme ", sağ tıklayın ve yeni bir klasör oluşturun ve" Project1Branch "adlı bir ad verin).
  • "Projem1" üzerine sağ tıklayın .... TortoiseSVN -> Branch / Tag.
  • Çalışan kopyayı seçin.
  • Tarayıcıyı açın .... "URL'ye" paralel sağda.
  • Özelleştirme seçin ..... sağ tıklayın sonra Klasör Ekle. ve oluşturduğunuz klasörü gözden geçirin. İşte "Project1Branch". Şimdi eklemek için Tamam düğmesini tıklayın.
  • Bu yeni banch'a göz atın.
  • Yine hangi dalı oluşturmak istediğiniz projenize gidin. TorotoiseSVN -> şube / etiketini sağ tıklayın. Ardından çalışan kopyayı seçin. Ve URL'yi şube adınız olarak verebilirsiniz. {IP adresiniz / svn / AAAA / Özelleştirme / Project1Branch} gibi. URL'deki adı, yalnızca bu ada sahip klasörü oluşturacak şekilde ayarlayabilirsiniz. {IP adresiniz / svn / AAAA / Özelleştirme / Project1Branch / MyProject1Branch} gibi.
  • OK düğmesine basın. Şimdi günlükleri görebilirsiniz ... çalışma kopyanız şubenizde saklanacaktır.
  • Şimdi bir göz atabilirsin ... ve işin tadını çıkarmana izin ver. :)

-1

Aşağıda, Windows makinesinde TortoiseSVN kullanarak gövdeden bir şube oluşturma adımları verilmiştir. Bunun açıkça yüklenmesi için TortoiseSVN istemcisi gerekir.

  1. Yerel Windows makinesinden güncellenmiş gövdeye sağ tıklayın
  2. TortoiseSVN Seçin
  3. Tıklama dalı / Etiket
  4. SVN deposunda Kime yolunu seçin. Hedef URL'nin verilen yol ve şube adına göre güncellendiğini unutmayın
  5. Havuz tarayıcısında dalların içinde klasör oluşturmayın
  6. Şube yolu ekleyin. Örneğin, dallar /
  7. Referansınız için anlamlı bir günlük mesajı ekleyin
  8. Tamam'ı tıklatın, yerel sistemde yeni klasör oluşturur
  9. Yeni klasöre oluşturulan şubeye göz atın
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.