Subversion kullanmaya devam etmenin özel nedenleri? [kapalı]


22

Şirketim için bir sürüm kontrol sistemi seçmek istiyorum. Şimdiye kadar Git, Subversion ve Mercurial olduğunu biliyorum.

Bugünlerde Git'in en çok kullanılan olduğunu görüyorum, bu yüzden merak ettim: Subversion'u kullanmak için herhangi bir özel sebep olabilir mi, yoksa doğrudan Git'e mi gitmeliyim?


36
İkisi de çalışıyor. Önemli olan, bize söylemediğiniz gereksinimlerinizi karşılayıp karşılamadıklarıdır.
Matthew Flynn


11
Hangi argüman üzerinde Mercurial'ı dışlıyorsunuz?
mouviciel

8
Öznel (IMHO canını sıkma) ifadeler için -1 ve "O gün Git'in en çok kullanılanı olduğunu görüyorum" - kaynak gösterilmeli. Açık kaynak kodlu dünyada Git çok yaygın, ancak kurumsal alanda çok daha nadir. Kolordu gerçekten tek, merkezi, otoriter bir havuz fikri gibi ve değişmesi çok yavaş. Kurumsal alanda, CVS'den bile iyi CV CV görme olasılığı daha yüksektir, DVCS'ye aldırış etmeyin.
Keith

4
@RobinWinslow - SVN Git'ten farklıdır. Bazı durumlara daha iyi ve bazılarına uygun olarak daha uygun. Şahsen genel olarak DVCS'yi tercih ediyorum ve açıkça Git'i tercih ediyorsunuz, ancak ikisi de öznel görüşler. Değersiz değiller, ancak böyle bir siteye ait değiller.
Keith

Yanıtlar:


46

SVN hiç ölmedi. Hala çok geniş kullanım alanı var ve yakın zamanda hiçbir yere gitmiyor. SVN, özellikle dağıtılmış sürüm kontrolü gerektiren bir dağıtılmış proje çalıştırmıyorsanız, dağıtılmış sürüm denetiminden daha basittir .

Yalnızca bir merkezi havuzunuz varsa (bu, şu ana kadar kaynak kontrolü olmadan geçebilecek kadar küçüklerse, şirketinizin ihtiyaç duyacağı tek şey), bununla etkileşim kurmak için SVN kullanmak çok daha kolaydır. Örneğin, SVN ile depodaki değişiklikleri kaldırabilir veya yerel değişikliklerinizi tek bir işlemle gerçekleştirebilirsiniz, oysa HG ve Git eşdeğer işleri yapmak için iki veya üç adım gerektirir.

Son revizyonlarla birlikte SVN, insanların HG ve Git'i tercih etmelerini sağlayan birçok performans sorununu çözdü. Şimdi birkaç yıl öncesine göre çok daha hızlı ve bu noktada, aslında dağıtılmış sürüm kontrolünün gelişmiş özelliklerine ihtiyaç duymadığınız sürece projeniz için HG veya Git'e bakmak için gerçekten iyi bir neden yok.


16
Tahmininize tamamen katılıyorum, ancak SVN'nin lehine önemli bir nokta eklemek isterim: Sektördeki birçok kişi SVN konusunda rahattır, ancak Git'in rahat çalışması için yeterince bilginiz yoktur. Tüm ekibiniz SVN’ye alışkınsa, Git’e geçiş oldukça pahalı olabilir. (Elbette tam tersi de olabilir).
Joachim Sauer

8
Yapabilseydim bu düzineden fazla oy alırdım. Pek çok insan modaya uygun, fakat neden dağınık kaynak kontrolüne ihtiyaç duyacaklarını gerçekten düşünmeyin.
Öforik

21
@Euphoric: Her projede neden her zaman dağınık kaynak kontrolü istediğimi kesinlikle biliyorum. Dallanma ve birleşmeyi basit, açık ve güvenilir kılmanın önemli bir yan etkisi vardır. Dallanma ile köşe vakalarında durgunluk hala çöküyor, çünkü seçtiği temel model daha karmaşık hale getiriyor.
Jan Hudec

18
Dağıtılmış sürüm kontrolü bir "soluk" değil. Bu, kaynak kontrolünün bir evrimi , tıpkı eşzamanlı sürüm kontrolünün, dosya kilitleme paradigması üzerinde bir evrimi olması gibi.
JesperE

6
@ MichaelBorgwardt, aslında birkaç kez yaptım. Yıkımdan çok daha kolaydır, her şeyin yerel olması çok yardımcı olur, "müşteri" ve "sunucu" etkileşimini açıklamaya gerek yoktur. Git veya hg'deki iş akışı çok daha doğal ve sezgiseldir (tarih düzenleme gibi zorlu parçalardan uzak durursanız).
SK-mantık

19

Müşteri takımlarından henüz bahsedilmedi. Her şeyi kesinlikle bir komut satırı komut dosyasıyla yapabilirsiniz, ancak GUI entegrasyonuna sahip olmak gerçek bir verimlilik artışı olabilir.

Çoğunlukla Visual Studio ile çalışıyoruz; IDE'ye entegrasyon kesinlikle şu anda Git'ten daha SVN ile daha iyidir. Bu gelecekte değişebilir, ancak kesinlikle sürüm kontrolü çalıştığı sürece kararınıza kesinlikle değinirim.

Tıpkı her şey gibi, sürüm kontrol sistemi de başlı başına bir amaç değil, sadece nereye gideceğinize ulaşmak için bir araç. Durumunuza göre sizi en hızlı oraya götürecek olanı seçin.


Bu iyi bir nokta. İnsanların Git'i SVN'den tercih etmelerinin nedenlerinden birinin Git'in daha iyi CLI aletlerine sahip olduğunu düşünüyorum. Ancak bu, Windows'ta TortoiseSVN gibi iyi bir 3. parti SVN GUI ile dengelenebilir.
Öforik

2
Git üzerinden Mercurial (ve TortoiseHg) için gitmemizin sebeplerinden biri de bu. Dağıtılmış versiyon kontrolü ve uygun takım ve IDE entegrasyonunun avantajları .
HappyCat

15

Ben Git hayranıyım. Son zamanlarda, Git'in olumsuz taraflarından birinin, svn'nin yayın numaralarının tersine karmaları olan sürümleri tanımladığını itiraf etmeliydim. Serbest bırakma numarası telefonla veya bunun gibi bir şeyle kolayca iletilebilir.

Ve hayal edebileceğim tek profesyonel bu. Bu özelliğe gerçekten güvenmek istiyorsanız, dağıtılmış ve / veya merkezi bir VCS Çarşısı içinde kullanabilirsiniz . Git'te amaca hizmet edebilecek etiketler var.

Her neyse, hızlı şube değişimi ve saklanma olmadan gelişmeyi hayal bile edemiyorum. Bu iki özellik tek başına SVN'yi yendi, o zamana kadar aynı görevi başarmak için aynı ağacın ayrı dizinler halinde oluşturulup kontrol edilmesi gerektiğini hatırlıyorum.

"Dağıtılmış sürüm kontrolünün gelişmiş özellikleri" olarak adlandırılanlar zamanla gelir ve başlangıçta bunları öğrenmek zorunda değilsiniz. Onlardan korkma. Size engel olmak için değil, size yardım etmek için buradalar. DVCS için merkezi bir depo oluşturmakta da bir sorun yoktur.


1
Bu gerçektir, git karma'nın yalnızca, bazı şeyleri değil, genellikle ~ 6 karakter yeterli olan şeyleri ayıklayabilmeleri için yeterince büyük bir bölüme ihtiyaç duyar.
TC1

2
Uygulamada, hiçbir zaman git git karmaşasını etrafından geçemezsin. Genellikle 6-7 karakter olan karma herhangi bir önekini kullanabilirsiniz.
JesperE

1
@JesperE: Evet, ancak SVN sürüm numaraları zaman içinde art arda yükselirken, Git'in karmaları, onları kısaltsanız bile rastgele olabilir.
Keith Thompson

2

SVN ile kolayca bir havuzun bölümlerini klasör seviyesine kadar kontrol edebilirsiniz, oyla git ise tüm geçmiş dahil tüm depoları alırsınız.

Duruma bağlı olarak, bunun SVN için bazı avantajları olabilir.

(Bu aynı zamanda, klasör ağaca kadar gizli ".svn" çöpleri gibi bazı büyük dezavantajlara sahiptir).


3
not: hayır .svn çöp v1.7 beri - şimdi hepsi tek bir yerde saklanır.
gbjbaanb

Bu doğru değil - git sadece geçmişleri olmayan dosyaları teslim almanıza izin veriyor ve isterseniz tek tek dosyaların yalnızca bazı kısımlarını da teslim almanız mümkün. Svn'den biraz daha karmaşık, ancak kapasite var.
Benubird

2

"Altı saatte yapılabilecek bir işiniz varsa, aracı oluşturmak altı saat sürse bile, 20 dakika içinde yapan bir araç yazmak daha iyi olur mu?"

Dağıtılmış Sürüm kontrolü ele alınması gereken farklı bir canavardır. Her geliştirici için önemli bir öğrenme gerektirir. Her geliştiricinin öğrenme sürecine uygun arabellek varsa, iyi dağıtılmış bir sürüm kontrol sistemine geçmelisiniz. Öğrenme aşaması sona erdiğinde, Dağıtılmış Sürüm Kontrolü, Merkezi Sürüm Kontrolünden çok daha iyidir.

Dağıtılmış Sürüm Denetimi bir olasılık gibi görünüyor. Çok uzun süre kalmak için burada, daha sonraya adapte olmamız daha iyi. SVN yeniyken ve insanlar CVS'ye alışınca aynı tartışmayı hatırlıyorum, SVN kullanmamak için pek çok tartışma yapıldı, ama sonunda SVN en popüler versiyon kontrol sistemi oldu.

Şirket mevcut sürüm kontrol sisteminde çok sayıda kaynak kodla iyi bir şekilde kurulmuşsa, yeni bir sisteme geçmek büyük bir görevdir, ancak şirket küçükse veya yeni bir sürüm denetimine geçmek çok kolaydır. Ancak daha eski bir sürüm kontrolüne sadık kalırsanız (yeni bir kurulumda), gelecekte bir sürüm kontrol geçişini planlamanız gereken gelecekte bir yere tıkanıklığa varacaksınız.

Çok sayıda profesyonel SVN yorumu gördüm, ancak hepsi "SVN daha iyi" değil, "SVN fena değil" doğasında olma eğilimindedir. Bu nedenle, projeniz için bir Dağıtılmış Sürüm Kontrolü (Git gibi) seçmenizi şiddetle tavsiye ederim.

EDIT’in GIT’in SVN’ye Göre Avantajları

  1. Özel bir sunucu gerekmez Gerçekte, her ikisi de bir sunucu olmadan kullanılabilir.
  2. Ağ bağlantısı olmadan bile geliştirmeye devam edebilir.
  3. Şube yönetimi çok daha kolaydır.
  4. Bamboo gibi CI araçlarından daha iyi destek

Birisi SVN'ye sadık kalmanın bir nedeni olarak (görsel stüdyo için) takımdan bahsetti. http://gitscc.codeplex.com/ , Visual Studio için GIT desteği sağlar.


6
SVN yapar sap ikili dosyaları daha sonra Git veya Hg.
Sahte Adı

2
“Gelecekte, bir sürüm kontrol geçişi planlamanız gereken bir tıkanıklığı vuracaksınız…” Üzgünüm, bunun bugün hamle yapmak için iyi bir neden olduğu konusunda hemfikir değilim. Bu yaklaşımın, işleri olması gerekenden daha karmaşık hale getirdiği birçok proje üzerinde çalıştım ve gelecekteki faydalarından yararlanmadan çok önce proje iptal edildi. Bazen yeterince iyi, yeterince iyi. YAGNI'ye bağlı kalın ve bugün işin ne yaptığını alın. Daha sonra göçler konusunda endişelenmek için yeterli zaman olacaktır. En azından hala bir projen olacak.
njr101

2
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.Buna tamamen katılmıyorum. Bazı durumlarda bazı algılanan faydalara sahip olabilir, ancak svn'nin insan tarafından okunabilir olması sürüm numarası kadar basit bir şey birçok kuruluşta büyük bir faydadır.
TZHX

1
@apeirogon - Her şey havuza koyacağınız şeye bağlı. Çalıştığım ana depolardan birinde tek başına HEAD 11.1 GB! Git / bzr / hg deposunda olsaydım, muhtemelen 100+ GB alacaktır.
Sahte Adı

1
Elbette, bunun nedeni, bu özel repo'nun, hepsi ikili biçimde olan ve çok fazla alan verimli olmayan, PCB dosyaları ve 3B modellerle dolu olmasıdır. Buradaki öneri (Electronics.SE, örneğin PCB ddesign dosyalarını depolayan insanlar için, vb.) Kaynak kodunu saklayan biri için çok farklı.
Sahte Adı

1

Subversion'u o gün kullanmak için herhangi bir özel sebep olabilir mi

IDE'lerde takım desteği dışında (ki kullanmadım) - gerçekten değil, hayır. Elbette SVN daha tanıdık gelebilir ama bu tek sebeple ilgili ve hem Hg hem de Git'i öğrenmesi çok kolay (ve çok hızlı) buldum.

Evet, dalların sadece bir Hilbert uzayının altmanaloldlarını haritalayan homeomorfik endofunctors olduğunu anlayınca Git'in önemsiz olduğunu tanımlayan tüm karmaşık kılavuzlar var. 1

Bunu anlamıyorum. Ama ne biliyorsun? Önemli değil. Git'i kullanmak için bunlardan hiçbirini bilmenize gerek yok.

Git ve Hg'nin büyük bölümü kullanımı kolaydır ve SVN'ye göre kesin avantajları vardır. Odadaki fil elbette dallanmadır: dallar sadece Git ve Hg'de çalışır. Buna karşılık, SVN'de en iyi şekilde acı verici ve en kötüsünde kırılmışlardır (çoklu kafaları birleştirerek).

Tabii ki olabilir hala SVN kullanıyoruz. Ayrıca hala Windows XP kullanabilirsiniz. Ancak, her ikisini de deneyen kullanıcıların çoğu alternatiflerden birinin çok daha üstün olduğu konusunda hemfikirdir.


1 Evet, bunun bir şaka olduğunu anladım. Bence.


Bir Hilbert uzayının altmanifoldlarını haritalayan homeomorfik endofunctors ile bir Git öğretici? Bunu okumam gerek! Fakat bu, Haskell'de yazılan ( endofunctor'un bahsettiğini düşündüğüm ) ve kuantum mekaniğinden (dolayısıyla Hilbert alanı ) ilham alan Darcs için geçerli değil mi? Git ve HG'nin bu şeylerle ne yaptığını gerçekten göremiyorum.
leftaroundabout

@leftaroundabout Bu bir şaka. Açıklama bile doğru değil (bildiğim kadarıyla). “Git dalları bunun farkına varmak kolaydır…” ile başlayan birçok öğreticiyi çok etkiliyor ve sonrasında karmaşık bir etki alanına özgü metafor var.
Konrad Rudolph

1
Aşırı karmaşık olan bu eğiticilerin bir sebepten dolayı bulunduğunu hiç düşündünüz mü? Peki bu ne için? DVCS kalabalığının dallanma ile ilgili takıntısını hiç anlamadım ve ardından her küçük şey için bir dalı yeniden birleştirdim. Bu her zaman bana bir problem arayışı içerisinde bir çözüm gibi geldi. Bir şubeyi SVN'ye yeniden entegre etmek zordur, çünkü bu ilk başta yapılması gereken çok aptalca ve kavramsal olarak yanlış bir şeydir ve "ürünümüzün yanlış şeyi yapmayı çok daha kolay hale getirdiğini" belirten hiçbir argüman bulamıyorum çok ikna edici.
Mason Wheeler,

1
Paralel olarak birden fazla değişiklik üzerinde çalışırken, bunun biraz acı verici olduğunu itiraf edeceğim, ancak doğru çözüm rafta, bir sonraki SVN sürümü için planlanmış. Ve çoğu zaman, aynı anda birden fazla değişiklik üzerinde çalışıyorsanız (ve özellikle tutarlı bir şekilde yapıyorsanız!), Kuruluş düzeyinde ele alınması gereken, yeni ile etkinleştirilemeyen daha geniş bir sorunun kanıtı. araçlar. (Yukarıya bakınız, "ürünümüz yanlış iş yapmayı çok daha kolay hale getirir" ve Joel'in insan işi değiştirme konusundaki klasik makalesi.)
Mason Wheeler

3
@KonradRudolph SVN'nin en son sürümlerinde şubeleri tekrar gövdeye bağlama. Birkaç senedir giderek daha iyi hale geldi.
Adam Bruss,
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.