SVN veya Git kullanmalı mıyım? [kapalı]


321

Yeni bir dağıtılmış projeye başlıyorum. SVN veya Git kullanmalı mıyım ve neden?


5
Evet, git Mac'te çalışıyor. Yüklemek için macports kullanırsanız, kesinleştirme ve göz atma arabirimlerine bir mac ön ucu bile yüklenir.
Seth Johnson


3
@Andre - MonoDevelop kullanabileceğiniz için - Mac veya bilgisayarımda .NET yazılımı geliştirebilmem için Apps Kasası'ndan SVN'ye geçiyorum. Apps Kasası için müşteri yoktu ama SVN :-) için vardı
schmoopy


4
Github / bitbucket + sourcetree = cennet! - sourcetreeapp.com
thecodeassassin

Yanıtlar:


253

SVN bir repo ve çok sayıda müşteridir. Git, her biri bir kullanıcısı olan çok sayıda müşteri deposuna sahip bir repo. İnsanların işleri harici bir sunucuya zorlamak zorunda kalmadan kendi düzenlemelerini yerel olarak izleyebilecekleri bir noktaya dağıtılmıştır.

SVN, Git'in kendi Git deposuna sahip her bir kullanıcıya dayandığı ve bu depoların değişiklikleri merkezi bir merkeze ittiği daha merkezi olacak şekilde tasarlanmıştır. Bu nedenle Git, bireylere daha iyi yerel sürüm kontrolü sağlar.

Bu arada TortoiseGit , GitExtensions arasında seçim yapabilirsiniz (ve "merkezi" git- deponuzu github'da , kendi istemcisi olan Windows için GitHub'da barındırıyorsanız ).

SVN'den çıkmak istiyorsanız, Bazaar'ı biraz değerlendirmek isteyebilirsiniz . Bu dağıtılmış öğeye sahip yeni nesil sürüm kontrol sistemlerinden biridir. Git gibi POSIX bağımlı değil, bu yüzden yerel Windows yapıları var ve onu destekleyen bazı güçlü açık kaynak markaları var.

Ancak henüz bu tür özelliklere ihtiyacınız olmayabilir. Göz at dağıtılmış VCSes özellikleri, avantajları ve dezavantajları . SVN tekliflerinden daha fazlasına ihtiyacınız varsa birini düşünün. Bunu yapmazsanız, SVN'nin (şu anda) üstün masaüstü entegrasyonuna bağlı kalmak isteyebilirsiniz.


24
Ayrıca Hg (Mercury)
Joel

24
Ekim 2008'den bu yana işler çok daha iyi oldu. TortoiseGit'i kurabilir, MSysGit'in en son taşınabilir sürümünü alabilir ve TortoiseGit'e nerede bulacağını söyleyebilirsiniz. Ben büyük svn repo bugün git git taşındı çünkü svn zayıf adlandırma desteği sonunda beni yeterince deli yaptı.
Hepimiz Monica

4
2 yıl ilerledikçe şimdi bazı iyi pencere araçlarımız var. Şu an MSysGit ile netbeans kullanıyorum. TortoiseGit'te de iyi şanslar yaşadım. Üretimde kullanılacak kadar iyi olduğunu düşünüyorum. Yıkımdaki basit çatışmaları yönetmenin ne kadar zor olduğu düşünüldüğünde, büyük bir gelişme.
Keyo

24
Git'i Windows'da yoğun bir şekilde kullanıyoruz ve uzun süredir var. Git, Windows'ta kesinlikle harika.
Charlie Flowers

13
@Oli Yanıtınızı (Windows git istemcisi hakkında esp) buradaki yorumlara ve deneyiminize göre güncellemek iyi olur. Şu anki cevap şimdi yazıldığından beri 2-3 yıl geçti.
amit

111

"Git Windows'ta iyi değil" kavramını hiç anlamadım; Sadece Windows altında gelişiyorum ve git ile hiç problem yaşamadım.

Kesinlikle git subversion üzerinde tavsiye ederim; onun sadece çok daha çok yönlü ve yıkım asla gerçekten olamazdı bir şekilde "çevrimdışı geliştirme" sağlar. Akla gelebilecek hemen hemen her platformda mevcut ve muhtemelen kullanacağınızdan daha fazla özelliğe sahip.


9
Öte yandan, pencerelerde git ile ilgili bazı problemler yaşadım, repoma gerçekten garip şeyler yaptım. Cygwin'deki en son sürümü kullanıyordum (bir ay önce olduğu gibi).
Roman Plášil

7
@Roman: Şey, Cygwin portu yerel win32 portu ile neredeyse aynı değil. Cygwin portunun daha az iyi test
edildiğini düşünüyorum

49
"Muhtemelen hiç kullanacağınızdan daha fazla özellik" kitabımda kırmızı bir bayrak
BT

26
@ BT "kırmızı bayrak" katılmıyorum. Sık sık kendimi bir şey yapmanın bir yolu olmasını diliyorum ve biraz araştırma yaptıktan sonra bunun hakkında bilmediğim birkaç komut olduğunu öğrendim. GIT'yi Windows makinemde de kullanıyorum ve henüz önemli problemlerim yok.
testing123

@ test123, ancak bunlar "muhtemelen [n] hiç kullanacağınız" özellikler değildir, çünkü onları gerçekten kullandınız.
mulllhausen

77

İşte o zamandan beri Git vs. SVN (Eylül 2009) hakkında silinen bazı soruların cevaplarının bir kopyası .

Daha iyi? Her zamanki bağlantı olan WhyGitIsBetterThanX dışında , bunlar farklıdır:

biri dallar ve etiketler için ucuz kopyaya dayanan bir Merkezi VCS, diğeri (Git) bir revizyon grafiğine dayanan dağıtılmış bir VCS'dir. Ayrıca bkz . VCS'nin temel kavramları .


Bu ilk bölüm, iki programın (SVN ve Git) temel amacının aynı olduğunu, ancak bunların oldukça farklı uygulandığını iddia eden yanlış bilgilendirilmiş yorumlar üretti. SVN ve Git arasındaki temel farkı
açıklığa kavuşturmak için şunu tekrar yazayım:

  • SVN, revizyon kontrolünün üçüncü uygulamasıdır : RCS, daha sonra CVS ve son olarak SVN , sürüm verilerinin dizinlerini yönetir. SVN, VCS özellikleri (etiketleme ve birleştirme) sunar, ancak etiketi yalnızca bir dizin kopyasıdır (bir şube gibi, bir etiket dizinindeki herhangi bir şeye dokunmanız "gerekmemesi dışında) ve birleştirme hala karmaşıktır, şu anda meta -data zaten birleştirilenleri hatırlamak için veri eklendi.

  • Git, şubelerin veri geçmişinin bir parçası olduğu (ve verilerin kendisinin değil) bir DAG ( Yönlendirilmiş Döngüsel Grafik ) tabanlı gerçek bir Sürüm Kontrol Sistemine dönüşen bir dosya içerik yönetimidir (dosyaları birleştirmek için yapılmış bir araçtır) ) ve etiketlerin gerçek bir meta veri olduğu durumlarda.

"Temelde" farklı olmadıklarını söylemek, çünkü aynı şeyi başarabilir, aynı problemi çözebilirsin, ... pek çok seviyede açık yanlıştır.

  • Çok sayıda karmaşık birleşiminiz varsa, bunları SVN ile yapmak daha uzun ve hataya daha açık olacaktır. çok sayıda şube oluşturmanız gerekiyorsa, onları yönetmeniz ve birleştirmeniz gerekir, özellikle Git ile SVN'den çok daha kolay, özellikle çok sayıda dosya varsa (hız o zaman önemli hale gelir)
  • devam etmekte olan bir iş için kısmi birleşimleriniz varsa, yalnızca ihtiyacınız olan şeyleri işlemek, geri kalanını saklamak ve başka bir dalda ilerlemek için Git aşamalandırma alanından (dizin) yararlanacaksınız.
  • çevrimdışı gelişime ihtiyacınız varsa ... Git ile her zaman "çevrimiçi" olursunuz, diğer depolarla takip etmek istediğiniz iş akışı ne olursa olsun kendi yerel deponuzla birlikte olursunuz.

Yine de o eski (silinmiş) cevaba ilişkin yorumlar ısrar ediyor:

VonC: Uygulamadaki temel farkı (farklılıklar çok temel, ikimiz de bunu açıkça kabul ediyoruz) amaç farklılığı ile karıştırıyorsunuz.
Her ikisi de aynı amaç için kullanılan araçlardır: Bu yüzden daha önce SVN'yi kullanan birçok takımın Git'i lehine başarılı bir şekilde basabildi.
Aynı sorunu çözmedikleri takdirde, bu ikame edilebilirlik mevcut olmazdı.

, cevap verdim:

"ikame edilebilirlik" ... ilginç bir terim ( bilgisayar programlamasında kullanılır ).
Elbette, Git neredeyse hiç SVN'nin bir alt türüdür.

Her ikisinde de aynı teknik özellikleri (etiket, şube, birleştirme) elde edebilirsiniz, ancak Git yolunuza girmez ve aracın kendisini düşünmeden dosyaların içeriğine odaklanmanıza izin vermez .

Kesinlikle (her zaman) sadece SVN'yi Git ile değiştiremezsiniz (bu programın arzu edilen özelliklerinden herhangi birini değiştirmeden (doğruluk, gerçekleştirilen görev, ...) "(bu yukarıda belirtilen yerine getirilebilirlik tanımına referanstır ):

  • Biri genişletilmiş bir revizyon aracı, diğeri gerçek bir sürüm kontrol sistemidir.
  • Biri, basit birleştirme iş akışı ve (çok fazla değil) paralel sürümleri olan küçük ila orta monolitik projeye uygundur. SVN bu amaç için yeterlidir ve tüm Git özelliklerine ihtiyacınız olmayabilir.
  • Diğer çoklu bileşenler göre büyük projeler (orta sağlayan bileşen başına bir Repo böylece büyük kompleks birleştirme iş akışında birden fazla dallar arasında birleştirme için dosya sayısı, dal paralel alternatifler, güçlendirme birleştirme ve birlikte). SVN ile yapabilirsiniz, ancak Git ile çok daha iyi durumdasınız.
    SVN, herhangi bir birleştirme iş akışı ile herhangi bir boyuttaki herhangi bir projeyi yönetemez. Git yapabilir.

Yine, doğaları temelde farklıdır (bu daha sonra farklı uygulamalara yol açar, ancak mesele bu değildir).
Birisi revizyon kontrolünü dizinler ve dosyalar olarak görür, diğeri sadece dosyanın içeriğini görür (o kadar ki boş dizinler Git'e bile kaydolmaz!).

Genel son hedef aynı olabilir, ancak bunları aynı şekilde kullanamazsınız veya aynı sınıf sınıfını (kapsam veya karmaşıklık) çözemezsiniz.


10
Seninle git ve svn'nin temelde farklı olduğuna katılmıyorum, ama pek çok noktanıza katılmıyorum. svn, cvs yerine yazılmış olabilir, ancak aksi takdirde hiçbir şekilde ilişkili değildir, cvs RCS'in üstünde komut dosyası olarak başladı, bu nedenle doğrudan bir ilişki var. Yine de, alıntı yaptığınız kişi tamamen haklıdır, her ikisi de temel olarak dosyaların revizyonlarını, uygulamayı ve gerçekleştiği süreci (veya nasıl gerçekleştirdiğini) uygulama detaylarıdır. CRC ve SHA1 arasındaki fark gibi, temelde çok farklı ama aynı şeyi yapıyorlar.
Erik Funkenbusch

37

SVN'nin nadiren alıntılanan 2 temel avantajı:

  1. Büyük dosya desteği. Koda ek olarak, ev dizinimi yönetmek için SVN kullanıyorum. SVN, TrueCrypt dosyalarımı boğmayan tek VCS'dir (dağıtılmış veya dağıtılmamış) (lütfen 500MB + dosyaları etkili bir şekilde işleyen başka bir VCS varsa beni düzeltin). Bunun sebebi fark karşılaştırmalarıdır (bu çok önemli bir noktadır). Rsync kabul edilemez çünkü 2 yönlü değildir.

  2. Kısmi depo (alt dizin) çıkış / iade. Mercurial ve bzr bunu desteklemez ve git'in desteği sınırlıdır. Bu bir takım ortamında kötüdür, ancak ev bilgisayarımdaki başka bir bilgisayarda bir şey kontrol etmek istersem paha biçilmezdir.

Sadece deneyimlerim.


6
"500MB + dosyaları etkin bir şekilde işleyen başka bir VCS varsa lütfen beni düzeltin" - Tabii Performans!
james creasy

8
Performans = ücretsiz değil. Ayrıca, Perforce tüm platformlarda mevcut değildir.
WhyNotHugo

4
Neden SVN deposunu truecrypt konteynırlarının içine koymuyorsunuz? Ayrıca ssh ile tünel oluşturabilir ve sunucuyu belirli bir depoyu başka bir truecrypt dosyası içinde saklayacak şekilde yapılandırabilirsiniz. Bunun, söz konusu repo için kısmi ödeme yapabilmeniz gibi ek bir avantajı vardır.
WhyNotHugo

1
@Hugo bildiğim kadarıyla, Perforce istemcisi Windows, Unix, Linux varyantları, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS ve Novell Dosya Sunucusu için kullanılabilir. Listede eksik olan ilgili bir platform var mı?
eis

1
Evet, OpenBSD (ve bunu deneyimlerden biliyordum, bunu google'a gerek yoktu). Yanlış da olsa maemo üzerinde çalışmayacak sanırım (ve evet, maemo üzerinde git kullanıyorum).
WhyNotHugo

25

Daha fazla araştırma yaptıktan ve bu bağlantıyı inceledikten sonra: https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html

(Aşağıda bazı alıntılar):

  • İnanılmaz derecede hızlı. Kullandığım başka hiçbir SCM buna ayak uyduramadı ve Subversion, Perforce, darcs, BitKeeper, ClearCase ve CVS gibi çok fazla şey kullandım.
  • Tamamen dağıtılmış. Depo sahibi nasıl çalıştığımı dikte edemez. Dizüstü bilgisayarımın bağlantısı kesikken dallar oluşturabilir ve değişiklikler yapabilir ve daha sonra bunu istediğiniz sayıda başka depo ile senkronize edebilirim.
  • Senkronizasyon birçok medyada gerçekleşebilir. WebDAV üzerinden HTTP üzerinden, FTP yoluyla veya iletinin alıcısı tarafından uygulanacak ekleri tutan e-postalar göndererek bir SSH kanalı. Merkezi bir depo gerekli değildir, ancak kullanılabilir.
  • Şubeler Subversion'da olduğundan daha ucuzdur. Şube oluşturmak, 41 baytlık bir dosyayı diske yazmak kadar basittir. Bir dalı silmek, o dosyayı silmek kadar basittir.
  • Subversion'un aksine dallar tam tarihlerini taşırlar. garip bir kopya yapmak ve kopya içinde yürümek zorunda kalmadan. Subversion kullanırken, dal oluşturulmadan önce gerçekleşen daldaki bir dosyanın geçmişine bakmak her zaman garip buldum. from #git: spearce: Sayfada SVN hakkında bir şey anlamıyorum. SVN i şube yaptım ve geçmişe göz atarak tüm geçmişi şubede bir dosya gösterdi
  • Git'te şube birleştirme daha basit ve daha otomatiktir. Subversion'da, doğru birleştirme komutunu oluşturabilmeniz için en son hangi düzeltmenin birleştirildiğini hatırlamanız gerekir. Git bunu otomatik olarak yapar ve her zaman doğru yapar. Bu, iki dalı bir araya getirirken hata yapma şansının daha az olduğu anlamına gelir.
  • Şube birleştirmeleri, deponun uygun tarihinin bir parçası olarak kaydedilir. Eğer iki dalı bir araya getirirsem ya da bir dalı nereden geldiğini gövdeye birleştirirsem, bu birleştirme işlemi depo tarihimin bir parçası olarak benim tarafımdan ve ne zaman gerçekleştirilmiş olarak kaydedilir. Kütükte oradayken birleştirme işlemini kimin yaptığını tartışmak zor.
  • Havuz oluşturmak önemsiz bir işlemdir: mkdir foo; cd foo; git init Bu kadar. Yani bugünlerde her şey için bir Git havuzu oluşturuyorum. Sınıf başına bir depo kullanma eğilimindeyim. Bu havuzların çoğu, sadece ders notlarını, ev ödevlerini ve LaTeX cevaplarımı sakladıkları için diskte 1 MB'ın altındadır.
  • Havuzun dahili dosya biçimleri inanılmaz derecede basit. Bu, onarımın çok kolay olduğu anlamına gelir, ancak daha da iyisi çünkü çok basittir, bozulması çok zordur. Hiç kimsenin Git deposunun bozulduğunu sanmıyorum. Subsion'u fsfs ile bozuk gördüm. Ve Berkley DB Subversion bdb arka ucuna kodumu güvenmek için kendini çok kez bozuk gördüm.
  • Git'in dosya formatı, çok basit bir format olmasına rağmen verileri sıkıştırmakta çok iyidir. Mozilla projesinin CVS deposu yaklaşık 3 GB; Subversion'ın fsfs biçiminde yaklaşık 12 GB. Git'te yaklaşık 300 MB.

Tüm bunları okuduktan sonra Git'in bir yol olduğuna ikna oldum (biraz öğrenme eğrisi olmasına rağmen). Git ve SVN'yi Windows platformlarında da kullandım.

Yukarıdakileri okuduktan sonra başkalarının ne söylediğini duymak isterim?


15
Git, bazı işlemlerde inanılmaz derecede hızlıdır, çünkü işlem yalnızca yerel deponuzu etkiler. Bir Git tarihi, örneğin, olmamalıdır adil bir SVN check ekibinizin geri kalanı için bir evreleme deposuna değişimin bir itme de olduğu için, SVN check ile karşılaştırılabilir. Bu bir ağ isabeti gerektirir ve Git'in hiçbir ağını karşılaştırmak, bir ağ aktarımını karşılaştırmak uygun olmayan karşılaştırmalar yapar. Taahhüt edip sabit sürücüyü kaybederseniz Git ile değişikliğinizi kaybedersiniz. Beklemek için büyüdüğünüz şey budur, ancak dağıtılmamış SCM'lerde beklenmez.
Edwin Buck

1
@EdwinBuck Waqar'ın yaptıklarını dikkate almamak, ağ süresi dikkate alındığında bile testlerde git daha hızlı olma eğilimindedir: git-scm.com/about/small-and-fast
Sqeaky

" Windows oluşturmak önemsiz bir işlemdir" noktanız özellikle Windows'da son derece önemlidir: SVN ile karşılaştırıldığında, hepsi Git ile merkezi (- çıplak) bir repoya bağlanan bir grup birbirine bağlı dağıtılmış depoları hızlı bir şekilde simüle etmek çok daha kolaydır. SVN (Windows SVN sunucu uygulaması, vb. yükleyin) ile benzer yapmaktır. Ayrıca Git'i işletim sistemlerinde daha tutarlı buluyorum: komut satırı çok iyi tasarlanmış ve bu nedenle çoğu zaman (ve işletim sistemleri arasında neredeyse aynı) yeterli ve çeşitli SVN yerel istemci / sunucu uygulamaları ...
Shivan Dragon

1
Bahsettiğiniz wiki makalesi hatalarla dolu. Bu nedenle cevabınız yanlış. Downvoted. Wiki'de karşılaştırmanın neden yanlış olduğunu söyleyen svnvsgit.com ile ilgili bir konuşma sayfası var .
bahrep

İnanılmaz derecede hızlı mı? Ciforth projesini yerel bir cvs'den github'a taşıdım. Bu basit bir projedir ancak 10.000 satırlık büyük bir ana kaynak dosyasına sahiptir. Bu dosyada suçu kullanmaya çalışırsam github zaman aşımına uğrar. Çoğunlukla hızlı söyleme konusunda memnun değilseniz ve böyle bir niteleyici kullanmakta ısrarcıysa, dengeli bir fikir değildir ve söylediğiniz her şey hakkında beni şüpheye düşürür. Groetjes Albert
Albert van der Horst

12

Bir Subversion deposu kurarım. Bu şekilde, bireysel geliştiriciler Subversion istemcilerini mi yoksa Git istemcilerini mi (ile git-svn) kullanmayı seçebilirler . Kullanmak git-svnsize tam bir Git çözümünün tüm avantajlarını sağlamaz, ancak bireysel geliştiricilere kendi iş akışları üzerinde büyük bir kontrol sağlar.

Git'in Unix ve Mac OS X'te olduğu gibi Windows'ta da iyi çalışmasının nispeten kısa bir zaman olacağına inanıyorum (sizden beri istediniz).

Subversion, Windows entegrasyonu için TortoiseSVN ve Visual Studio entegrasyonu için AnkhSVN gibi Windows için mükemmel araçlara sahiptir.


11

Komik olan şey: Subversion Repos'ta projeleri barındırıyorum, ancak Git Clone komutu ile bunlara erişiyorum.

Lütfen Google Code Projesi'nde Git ile Geliştir'i okuyun

Google Code Subversion'ı doğal olarak konuşmasına rağmen, geliştirme sırasında Git'i kolayca kullanabilirsiniz. "Git svn" araması bu uygulamanın yaygın olduğunu gösterir ve biz de bunu denemenizi öneririz.

Git'i bir Svn Deposunda kullanmak bana faydalar sağlar:

  1. Birden fazla makineye dağıtılmış olarak çalışabilirim
  2. Başkalarının kontrol etmesi için merkezi bir backup/public svn depom var
  3. Git'i kendi başlarına kullanmakta özgürler

3
Sadece bir not: Temmuz 2011 itibarıyla Google Code Git'i yerel olarak desteklemektedir.
Jeremy Salwen


9

Ekibiniz zaten cvs veya svn gibi sürüm ve kaynak kontrol yazılımlarına aşina ise, basit ve küçük bir proje için (iddia ettiğiniz gibi), SVN'ye bağlı kalmanızı tavsiye ederim. Svn ile gerçekten rahatım, ancak django'da yaptığım mevcut e-ticaret projesi için git üzerinde çalışmaya karar verdim (git'i svn modunda kullanıyorum, yani itip çektiğim merkezi bir repo ile en az bir başka geliştirici ile ortak çalışma yapmak için). Diğer geliştirici SVN ile rahat ve başkalarının deneyimleri farklı olsa da, ikimiz de bu küçük proje için git'i kucaklamak için gerçekten kötü bir zaman geçiriyoruz. (İkimiz de önemli Linux kullanıcılarıyız, eğer önemliyse.)

Yaptığınız mil değişebilir, elbette.


8

Kesinlikle svn, Windows - en iyi ihtimalle - dünyasında ikinci sınıf bir vatandaş olduğundan git( daha fazla bilgi için bkz. Http://en.wikipedia.org/wiki/Git_(software)#Portability ).

GÜNCELLEME: Bozuk bağlantı için özür dilerim, ama SO'yu parantez içeren URI'lerle çalışmasını sağlamaya çalıştım. [bağlantı düzeltildi. -ed]


1
Bilginize: URL'yi köşeli parantez içine alın veya parantezleri% 28 ve% 29 ile değiştirin.
PhiLho

1
URL kodlaması [] () sözdizimi için çalışır mı?
Hank Gay

16
Bu yanlış FUD. Git Windows'ta harika. Ve SVN her yerde oldukça kötü.
Charlie Flowers

6
Beni küçümseyen herkes için, lütfen geri dönün ve 2008 dolaylarındaki geliştirici yorumlarına bakın: Linus ve çetenin Windows'u desteklemeyi umursamadığı açıktır. Sorun değil: Gerçekten de yapmak istemiyorum ve yazılımım dosya sisteminden POSIXish davranışını bekleyen VCS kadar karmaşık değil. Bağlama bakarsanız ifademi FUD olarak nitelendirmek haksızlık gibi görünüyor.
Hank Gay

2
Belki 2008'de git Windows'ta kötüydü, ancak 2009'dan beri msysgit kullanıyorum ve kusursuz çalışıyor. Buna GitHub'ın çevrimdışı masaüstü eşdeğeri gitk dahildir.
Dan Dascalescu

8

Ana nokta Git'in dağıtılmış bir VCS ve Subversion'un merkezileştirilmiş olmasıdır. Dağıtılmış VCS'lerin anlaşılması biraz daha zordur, ancak birçok avantajı vardır. Bu avantajlara ihtiyacınız yoksa Subversion daha iyi bir seçim olabilir.

Başka bir soru araç desteğidir. Hangi VCS kullanmayı planladığınız araçlar tarafından daha iyi desteklenir?

EDIT: Üç yıl önce bu şekilde cevap verdim:

Git şu anda Windows'ta yalnızca Cygwin veya MSYS aracılığıyla çalışıyor . Subversion, Windows'u en başından destekledi. Windows için git-çözümleri sizin için işe yarayabileceğinden, Git'in çoğu geliştiricisi Linux ile çalıştığı ve en başından beri akılda taşınabilirlik olmadığı için sorunlar olabilir. Şu anda Subversion'u Windows altında geliştirme için tercih ederim. Birkaç yıl içinde bu önemsiz olabilir.

Şimdi dünya biraz değişti. Git'in pencerelerde iyi bir uygulaması var. Her ne kadar (bu sistemi artık kullanmıyorum) pencerelerde kapsamlı bir şekilde test etmeme rağmen, tüm büyük VCS'lerin (SVN, Git, Mercurial, Bazaar) şimdi Windows uygulamasının uygun olduğundan eminim. SVN için bu avantaj ortadan kalktı. Diğer noktalar (Merkezi - Dağıtılmış ve takım desteği kontrolü) geçerliliğini korur.


İlgisizlik ufkunun birkaç yıldan daha kısa olacağı konusunda iyimserim.
Greg Hewgill

Evet, muhtemelen sadece bir yıl sürecek. Git dinamik bir geliştirme topluluğuna sahiptir. Ama yıkım da var. Bir ya da iki yıl içinde bu soruya cevap vermek için her ikisine de tekrar bakmanız gerekecek.
Mnementh

1
Şimdi bir ya da iki yıl sonra. Nasıl görünüyor? :)
Merlyn Morgan-Graham

3
Git, dağıtılmış SCM modelinin yazılım geliştirme kanalının diğer aşamalarına genişletilmesinden yoksundur. Dağıtılmış sürüm oluşturma sistemleri, dağıtılmış otomatik test, kalite kontrol, sürüm kontrolü vb.İçin iyi bir modelimiz yok. Dağıtılmış yedekleme için bazı deneysel destek alıyoruz ve bu onlarca yıl süren araştırmaların ardından. Bu nedenle Git geliştiriciye daha fazlasını, yazılım geliştirme sürecine daha azını sunar. Tüm Git uygulamaları sonunda bir repoyu merkezi olan olarak kutsar, bu da en ilginç Git yeteneklerini SVN'lerin fakslarına basitleştirir.
Edwin Buck

1
@hibbelig Git'in merkezi bir deposu yoktur, her depo etkili bir şekilde (dağıtılmış tasarımı nedeniyle) eşittir. Bu, ya üretim boru hattınızı tüm depoları eşit olarak işlemek için yeniden çalıştığınız ya da bir havuzu "yapay olarak yükseltilmiş" statüsünde (yani merkezi depo olarak ) yapay olarak kutsadığınız anlamına gelir . İlkini yaparsanız, kimse herhangi bir geliştiricinin masasından bir sürümün gelebileceği paralel boru hatları inşa etmek hakkında çok fazla şey bilmiyor, ikincisini yaparsanız, dağıtılmış işleme vaadi merkezi konvansiyon tarafından aldatılmaktadır.
Edwin Buck

6

Daha yaygın ve daha iyi bilindiği için SVN'yi tercih ederim.

Sanırım Git Linux kullanıcısı için daha iyi olurdu.


1
Ancak bu hızla değişiyor. GIT kazanırken SVN pazar payını kaybediyor : Örneğin: wikivs.com/wiki/Git_vs_Subversion#Popularity veya programmers.stackexchange.com/questions/136079/…
Zelphir Kaltstahl

@Zelphir: 7 yıl hızlı aramazdım, ama evet, GIT pazar payları kazanıyor ve dosyaları birleştirmek için özellikle daha iyi.
Burkhard

4

Git henüz Windows altında yerel olarak desteklenmemektedir. Posix sistemleri için optimize edilmiştir. Ancak Cygwin veya MinGW'yi çalıştırmak Git'i başarılı bir şekilde çalıştırmanızı sağlar.

Bugünlerde Git'i SVN'ye tercih ediyorum, ancak CVS, SVN topraklarından gelirseniz eşiği aşmak biraz zaman alıyor.


8
'Doğal' tanımlayın. msysgit gayet iyi çalışıyor
Milan Babuškov

4

Muhtemelen Git'i seçerdim çünkü SVN'den çok daha güçlü olduğunu hissediyorum. Benim için harika çalışan ucuz Kod Barındırma hizmetleri var - yedeklemeler veya herhangi bir bakım işi yapmak zorunda değilsiniz - GitHub en açık adaydır.

Bununla birlikte, Visual Studio ve farklı SCM sistemlerinin entegrasyonu hakkında hiçbir şey bilmiyorum. SVN ile entegrasyonun daha iyi olduğunu hayal ediyorum.


4

SVN'yi uzun zamandır kullandım, ancak Git'i her kullandığımda Git'in çok güçlü, hafif olduğunu ve biraz öğrenme eğrisi olmasına rağmen SVN'den daha iyi olduğunu hissettim.

Belirttiğim, her SVN projesinin, büyüdükçe, ihraç edilmedikçe çok büyük bir proje haline gelmesidir. GIT projesi (Git verileriyle birlikte) çok hafiftir.

SVN'de, acemiden uzmanlara geliştiricilerle uğraştım ve acemiler ve ara ürünler, yeniden kullanmak için başka bir SVN projesinden bir klasörü kopyalarlarsa Dosya çakışmalarını tanıttılar. Oysa Git'te sadece klasörü kopyalarsınız ve çalışır, çünkü Git tüm alt klasörlerinde .git klasörlerini (SVN'nin yaptığı gibi) tanıtmaz.

SVN ile uzun zamandan beri çok uğraştıktan sonra, sonunda geliştiricilerimi ve beni Git'e taşımayı düşünüyorum, çünkü işbirliği yapmak ve işi birleştirmek kolay, ayrıca büyük bir avantaj da yerel bir kopyanın değişikliklerinin yapılabileceği istenir ve daha sonra SVN'den farklı olarak (sunucudaki depoda zaman zaman değişiklikler yapmak zorundayız) tek seferde sunucudaki şubeye itilir.

Git ile gerçekten gitmem gerekip gerekmediğine karar vermeme yardımcı olabilecek biri var mı?


SVN denetimli bir klasörü yeniden kullanmak için başka bir projeye kopyalayan ve belirgin sorunların 'orta' olmasını beklemeyen hiçbir geliştiriciyi aramam. Onlara acemi diyorum. Evet, haklısınız, bunun nedeni SVN'ye dosyaların hangi depoya ait olduğunu bildiren .svn alt klasörü. Kullanıcı bu .svn alt klasörünü sildiyse, klasörü yeni SVN projesine alabilir. Hâlâ SVN ile birlikteyim ama ihtiyaçlarım az. GIT daha büyük projeler için mükemmeldir.
dyasta

3
En son svn istemcilerinin .svnher alt dizinde bir klasöre ihtiyacı yoktur . Bu, kopyalama hatasını gerçekleşmeden önce "düzeltir".
Edwin Buck

4

Aşağıdakilere gelir:

Gelişiminiz doğrusal olacak mı? Eğer öyleyse, Subversion'a sadık kalmalısınız.

Öte yandan, gelişiminiz doğrusal olmayacak, bu da farklı değişiklikler için dallanma oluşturmanız ve daha sonra bu değişiklikleri ana geliştirme hattına (Git ana dal olarak bilinir) geri birleştirmeniz gerektiği anlamına gelir. Sizin için ÇOK daha fazlası.


3

Bzr'i denedin mi?

Piyasada başka bir şey sevmedikleri için oldukça iyi, kononik (Ubuntu yapan insanlar) bunu yaptı ...


Windows desteği gerçekten burada biraz çalışma gerektiriyor. O kadar da değil, Windows altında son zamanlarda yaptığım tüm programlama (ya da adil bir şey yaptığım) ya da başka bir şey için çok mutlu bir şekilde kullanmadım ama yine de ...
SamB

OS ile zamanın neredeyse% 100'ü, insanlar "herhangi bir yazılım yaptılar çünkü pazarda başka hiçbir şey istemiyorlardı".
WhyNotHugo

@Hugo Açık kaynak koduyla, piyasadaki başka bir şeyi sevselerdi, yeni bir şey yapmak yerine buna katkıda bulunacaklardı.
11:14

Bu sorunun cevabı değil
Albert van der Horst

@AlbertvanderHorst Hayır değil, soru SO'nun vahşi batı günlerinde hiç kimsenin daha iyi bilmediği ve bir alternatif sunmadığı zaman cevaplandı. Acelemde tartışmalı olarak Canonical'in adını da yanlış yazdım. Yazık bana!
Omar Kooheji

3

Soruyu genişletebilir ve Git'in MacOS'ta iyi çalışıp çalışmadığını sorabilir miyim?

Yorumları Yanıtla: Haber için teşekkürler, bunu denemek için sabırsızlanıyordum. Evde Mac'ime kuracağım.


1
Evet, güzel çalışıyor. MacPorts üzerinden yükledim ve günlük olarak kullanıyorum.
Greg Hewgill

Öyle. Herhangi bir POSIX tabanlı sistemde (Unix, Linux, Solaris, BSD, vb.) Harika. Sorunun olduğu yer gerçekten sadece Windows.
Oli

git-gui ve gitk muhtemelen OS-X altında Linux ve Windows ile aynı şekilde çalışır. Kaplumbağa aksineSVN, hangi AFAIK sadece pencerelerdir?
David Schmitt

@David Schmitt: iyi, tortoisesvn.tigris.org buna "Subversion için Windows Kabuk Uzantısı" diyor, bu yüzden evet ;-) kabul ediyorum.
SamB

@Robert: git X ile deneyiminiz OS X'te nasıldı?
David Schmitt


2

SVN, diğer insanlar tarafından işaret edildiği gibi Windows altında iyi bir seçim gibi görünüyor.

Geliştiricinizin bir kısmı GIT'i denemek isterse, her zaman SVN deposunun bir GIT deposunda yeniden oluşturulduğu GIT-SVN'yi kullanabilir. Daha sonra GIT ile yerel olarak çalışabilmeli ve daha sonra değişikliklerini ana depoda yayınlamak için SVN'yi kullanabilmelidir.


1

Bir DVCS ile gitmek zorundasınız, kaynak yönetiminde kuantum sıçraması gibi. Şahsen ben Monoton kullanıyorum ve hızlandırılmış geliştirme zaman sonu yok. Windows, Linux ve Mac için kullanıyoruz ve çok kararlı. Hatta platformların her birinde projenin gece yapılarını yapan buildbot'um var.

Dağıtıldığında DVCS genellikle insanların sadece değişiklik yapması ve göndermesi için merkezi bir sunucu oluşturacağınız anlamına gelir.

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.