Subversion'u belirli bir artefakt yönetim aracıyla bir artefakt deposu olarak kullanma


19

TL; DR: Neden Subversion yerine bir eser deposu olarak Apache Archiva veya Sonatype Nexus gibi bir şey kullanıyorsunuz ?

Şu anda kullandığım derleme sistemi, derlemelerimize girdi ve çıktı olarak bir çok ikili blob'a (görüntüler, ses dosyaları, derlenmiş ikili dosyalar, vb.) Sahiptir. Bunları yönetme sistemimiz çok ad hoc; bazıları kodumuzla birlikte Subversion veri havuzumuza kontrol edilir, bazıları ise herhangi bir resmi sürüm kontrolünün dışında başka bir yerde saklanır.

Bunu birleştirmeye bakıyorum, bu yüzden daha tutarlı ve kullanımı kolay ve ikili eserleri koddan ayıran bir şeyimiz var.

Google bana bir dizi artefakt deposu bulunduğunu söylüyor ( Archiva , Nexus , Artefakt ,…), ancak etrafı okurken bunları Subversion üzerinden kullanmanın herhangi bir avantajını göremiyorum. Bu bizim için ikili dosyalara bakacaktır - zaten bazı ikili dosyalarımız için, depo düzenini koddan ayırmak için yeniden düzenlemek istiyoruz - ve zaten Subversion sunucularına ve uzmanlığına sahip olduğumuz dikkate değer bir avantaja sahiptir.

Yani. Subversion gibi genel bir sürüm kontrol aracını kullanmaya göre özel bir artefakt yönetim sistemi kullanmanın avantajı nedir?


Özel bir araç kullanmanın en büyük avantajı, diğer araçların bunları nasıl kullanacağını bilmesidir ! Bu araçlara yapay öğeler koyabilir ve otomatik bir şekilde geri alabilirler.
Joachim Sauer

Yanıtlar:


13

Kısa cevap: Genellikle, ikili eserler ve bu eserlerdeki değişiklikler geçmişine ihtiyacınız yoktur, sadece belirli sürümlere ihtiyacınız vardır.

Daha uzun cevap: İkili dosyada küçük bir değişiklik yaptığınızda, sürüm kontrol sistemlerinin delta oluşturmak için herhangi bir yolu yoktur - iki dosya arasındaki fark - böylece tamamen yeni bir kopya oluşturur.

SVNS'de, SVN gibi, bu çok büyük bir acı değildir, çünkü deponuzun yalnızca bir merkezi kopyası vardır - yerel kopyanız sadece bir versiyonudur. (O zaman bile, deponuz çok büyük hale gelebilir ve checkin'leri yavaşlatabilir.) Ancak daha sonra bir deponun her kopyasının her dosyanın tam geçmişine sahip olduğu bir DVCS'ye geçerseniz ne olur? Değişikliklerin boyutu orada çok alakalı hale geliyor.

Acı karşılığında sana ne veriyor? Sunulan tek şey, deponuzun önceki bir sürümüne geri dönüp o sürüm için doğru ikili dosyalara sahip olduğunuzu bilmektir.

Ama bunu yapmak için deponuzdaki tüm ikili dosyalara ihtiyacınız var mı? Veya başka bir yerde başka bir havuzdan hangi sürümlerin alınacağını söyleyen oluşturma işlemine söyleyen bir metin dosyasına sahip olmaktan kurtulabilir misiniz?

İkincisi, genellikle yapay depolar tarafından sunulan şeydir.

Buna ek olarak, Nexus gibi daha profesyonel olanlardan bazıları da üçüncü taraf eserler için lisanslama hakkında bilgi verecektir, böylece FOSS kütüphanesi olduğuna inandığınız şeyde ince bir maddeden düşme riskiyle karşılaşmazsınız.


Tamam, şu anki Subversion veri havuzumu yapay bir veri havuzu olarak kullanmaktan kaçınmalıyım, ama neden yeni bir Subversion veri havuzu kurmuyorsunuz? Bu aynı avantajlara ve dezavantajlara sahip gibi görünüyor; bir eser deposu büyük olasılıkla büyük ikili verilerin depolanmasıyla aynı sorunlara sahip olacaktır.
me_and

@me_and: Bunu yapabilirsin . Ama sonra hangi revizyonun yapının hangi sürümünü sağladığını yönetmelisiniz. Bir eser deposu sizin için yaptığında neden kendinize bu ekstra işi veresiniz? "Kodumu yazmak için Not Defteri'ni kullanabilir miyim? Peki neden Eclipse ile uğraşalım?" Ayrıca, yerden kazanmak için asla eski sürümleri gerçekten kaldıramazsınız. Bir eser deposu ile yapabilirsiniz.
pdr

1
@Pdr tarafından verilen cevabı vurgulamak ve genişletmek için, svn'yi ikili bir yapay yapı deposu olarak kullanacaksanız, büyük olasılıkla depolama sorunlarıyla karşılaşacaksınız, çünkü svn hiç veri silmeyecek şekilde tasarlanmıştır. Çalıştığım bir yerde eserler depolamak için svn kullandık ve düzenli olarak depolama sınırlarını aştık çünkü eski kullanılmayan eserleri mağazadan çıkarmak zor (imkansız değil, zor). Artifactory ve Nexus gibi yerel ikili havuz araçları, gereksiz eserlerin silinmesine izin verir.
Matthew Skelton

3
Düzeltme: Subversion dahili olarak ikili deltalar kullanır (ve sadece AFAIK). Yıllar önce MS Office dosyalarını depolamak için deneyler yaptım ve son derece etkili oldu. Havuz boyutu 200 PowerPoint slaytını yeniden karıştırırken bile çok yavaş büyüdü. Ancak ikili delta algoritmasının etkinliği dosya türüne göre büyük ölçüde değişecektir ve saklama politikasının eksikliği burada gerçek bir sorun (filtrelenmiş bir döküm / yük ile çalışabileceğiniz bir şey, ancak daha sonra kendi çözümünüzü yazmaya başlıyorsunuz).
Peter Becker

"sürüm kontrol sistemlerinin bir delta oluşturmak için herhangi bir yolu yoktur" - sorun tam olarak bunu yapmaktır - 2006'dan beri ... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 tr.wikipedia. org / wiki / Xdelta
RnR

1

SVN'yi sürüm derlemeleri için bir havuz olarak kullanıyoruz ve çok iyi çalışıyor. Bir sürümde 30gb'den daha iyi çeşitli sürümlerde daha iyi bir depomuz var ve dağıtım için kurulumları iyi bir şekilde gerçekleştiriyor.

Bunu yapmanın avantajlarından bazıları ..

  • SVN'ye eklenen ikili dosyalar ortalama tasarruf alanında yaklaşık yüzde 60-70 oranında sıkıştırılır.
  • SVN, sürümler için bir kitaplık (yapay) görevi görür ve depo Olağanüstü Durum Kurtarma amacıyla yedeklenir.
  • Https yoluyla SVN, serbest bırakma kodunun bir DMZ'ye güvenli bir şekilde gönderilmesini sağlar.
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.