Yanıtlar:
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.
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
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"
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.
--parentsile seçeneğiylesvn copy!
-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) .
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
rsyncBu şekilde kullanılmasına gerek yoktur . svn cpyerel değişiklikleri de kopyalar.
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
Normalde svn + ssh: //host.example.com/repos/project/branches/mybranch 'a kopyalarsınız, böylece depoda birkaç dal tutabilirsiniz, ancak sözdiziminiz geçerlidir.
Havuz düzeninizi nasıl ayarlayacağınızla ilgili bazı öneriler .
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
Şubenizi birleştirmeyi planlıyorsanız, buna bakmanızı şiddetle tavsiye ederim:
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ı!
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.