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 copy
komutu 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
, trunk
size bütün kopyalamak için izin verir - vs. trunk
içine (veya alt kümelerini) tags
ve / veya branches
klasö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 cp
ucuz 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 copy
komutu 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_BRANCH
geçirmek istiyorsanız ) veya (ayrı bir dizinde yeni dal olmasını istiyorsanız) kullanın.
--parents
ile seçeneğiylesvn copy
!
-m
Seç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 -m
diyor 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 Rsync
senkronize etmek için kullanın
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
Bu şekilde kullanılmasına gerek yoktur . svn cp
yerel 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 info
Geç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 switch
komutu 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.