Git neden bu kadar yutturmaca aldı? … Diğerleri yapmıyorken? [kapalı]


124

Son yıllarda, Git etrafındaki yutturmaca büyük ölçüde büyüdü. Herkes Git'i biliyor, kimse alternatifleri bilmiyor.

Mercurial gibi diğerleri farkedilmemiş gibi görünüyor. Her ikisi de 2005 yılında piyasaya sürüldü ve benzer işlevler sunuyor. Ayrıca, Mercurial'ın genellikle kullanımı daha kolay, daha sezgisel ve uzun zamandır daha iyi kullanıcı arayüzlerine sahip olduğu düşünülmektedir. Bu nedenle, bunun özellikle dağınık versiyon kontrolüne yeni başlayanlar için popüler bir alternatif olacağı varsayılabilir. Ancak, oldukça başarılı olan Git'in aksine çoğu insan için bilinmeyen görünüyor.

Bu yazının amacı, bu fenomeni daha iyi anlamaya çalışmaktır.

Git nasıl pastanın bir parçasını alıyor? Bir şekilde daha iyi pazarlama kullandılar mı? Topluluğunun daha fazla ... ahem ... "ayrıntılı" olduğu için mi? Linus ismi yüzünden mi? Geeky imajı yüzünden mi?

Senin düşüncen nedir?


63
Linus Torvalds'ın popülaritesinin tek nedeni olması konusunda
haklısın

4
Bilmiyorum, hg'den önce git hakkında bir şeyler duyduğum halde, bana kabaca eşit miktarda maruz kaldıklarını hissediyorum. Ama evet, Torvalds bir ünlü, bu yüzden karıştığı her şeyin dikkatini çekmesi muhtemel.
Per,


7
@jrwren, bu yorumdan ne Git'i ne de Mercurial'ı kullanmadığımı söyleyerek önsözleneceğim . Git'i öğrenip hemen Mercurial'ı (veya tersi vizesini) öğrenseydim, onlardan birinin öğrenmesi daha az zaman alırdı. Daha az zaman alan, kullanımı daha kolay olacağını düşündüğüm kişi. Grokking tipik olarak anlaşılması biraz zaman aldığını ve bunun daha zor kullanılması gerektiğini ima eder. Bunun bir ürünü daha kötü hale getireceğini söylemiyorum, bazen daha güçlü araçlar için daha dik bir öğrenme eğrisine ihtiyacınız var, ancak kesinlikle kullanım kolaylığını değiştiriyor.
zzzzBov

8
@MarkTrapp Tanrım, Mark! Görünüşe göre herkes iyi bir tartışma yapıyordu ve sonra gelip herkesi kapıya sokmak zorunda kaldın. Keşke tartışmalara izin veren StackOverflow gibi bir siteyi bilseydim.
Theodore R. Smith

Yanıtlar:


86

GitHub veya Gitorious gibi hizmetlerin büyük bir faktör olduğuna inanıyorum . İnsanların eşyalarını bir yerde ağırlayabilmeleri önemlidir ve özellikle GitHub bunun için mükemmel bir hizmettir.

Merccialial için, DVCS popüler olduğunda böyle bir hizmet yoktu (en azından hiçbirinin farkında değildim). Şimdi ve muhtemelen başkaları için Bitbucket'in var , ama GitHub epeydir oradaydı, iyi biliniyor ve daha iyi ve daha iyi oluyor.


Buna ek olarak, bazı büyük açık kaynaklı projelerin sizin için kararı veren git kullandığını da ekleyin. Git'i birkaç kez kullanmaya "zorladım" (örneğin android için) ancak Mercurial veya Bazaar kullanmaya zorlanmadım. Ayrıca, git harika olduğunu düşünüyorum :)
FeatureCreep

11
Ayrıca Google Code ve SourceForge hg için
yapılandırıcı

7
Git, diğer depoları gölgede bırakan Github tarafından artırılır. Bitbucket’in bazı avantajları var (ücretsiz özel depolar), ancak kullanıcı arayüzü
Github’a göre

2
GitHub ile konuşmak için yalnızca Mercurial kullanıyorum ... hggit eklentisi ( hg-git.github.com ) aracı topluluktan ayırmayı mümkün kılıyor. Ama belki topluluk araçlarından değil.
bpanulla

1
CodePlex de Mercurial'ı destekler.
Grant Palin

86

Buna, yazarın bir veya diğer SCM hakkında duyduklarında duyduğu hislere dayanan birçok cevap görüyorum. Diğerleri her şeyin tamamen şans olduğunu söylüyor. Şansın tarihe kadar uzanabileceğine inanıyorum.

Tarih hakkında konuşacağım.

Aynı sorunu çözmek için Git ve Mercurial aynı anda yaratıldı. O günlerde, Linux çekirdeği, 3 yıldır kullandığı tescilli bir SCM olan BitKeeper'ı kullanmayı bırakmak zorunda kaldı . Bunun nedeni, BitKeeper'ın arkasındaki şirket BitMover'ın CEO'su Larry McVoy'un, Linux topluluğundaki birisinin tersine mühendislik uygulamasından dolayı yazılımını ücretsiz olarak Linux geliştiricilerine vermeyi bırakmasıydı.

Zaten var olanlardan memnun olmayan Linus Torvalds, daha sonra Git diyeceği yepyeni bir SCM üzerinde çalışmaya başladı. Hemen ardından, Matt Mackall, benzer nedenlerden dolayı Mercurial projesini başlattı.

Bu projeleri ayrı ayrı geliştirdikten bir süre sonra, Matt Mackall, SCM'sinin gelişmiş bir versiyonunu sundu ve Git'i (sadece bir kaç hafta yaşlıydı) karşılaştırarak belirli bir şekilde kıyasladı. Linus , Kernel gelişimi için Git yerine kullanmayı düşündü , ancak Mercurial'ın revizyon değişikliklerini günlüğe kaydetmek için Changesets kullandığını fark ettiğinde fikri bıraktı . BitKeeper'ın çalışma biçimine çok yakın olduğundan korkuyordu ve kesinlikle birinin "Bir BitKeeper klonu inşa ettiler" demesini sağlayacak bir şey istemediğini söyledi.

Git bu nedenle Mercurial yerine Çekirdek gelişimi için kullanıldı, ancak her ikisi de teknik olarak ilgiliydi. Sonuçta Git, gerçekten kullanılmak üzere tasarlandığı yerde kullanılmaya başlandı ve Mercurial ilk büyük FOSS kullanımını bulmak kadar hızlı değildi. Çünkü çok iyi bir tasarıma sahipti ve Matt Mackall'ın ısrarı sayesinde nihayet ünlü oldu ve büyük, gerçek dünya projelerinde kullanıldı.

Bugün, ikisi de ünlü. Hangisinin en ünlü olduğunu söylemek imkansız. Google Code, Git'i yalnızca kısa bir süre önce Mercurial iken yakın zamanda entegre etti. Pek çok büyük ve ünlü proje ya kullanıyor.

Sanırım, demek istediğim, bir projeye başlamanın neden ortadan kaybolduğu zaman popülerlik kazanmak zor, ama yine de uygulanabilir.

Çarşı , GNU dünyasında çok ünlü, ancak bunun dışında pek fazla olmayan bir başka SCM'dir, çünkü GNU topluluğunu tatmin etmek amacıyla inşa edilmiştir. Yazılım genellikle yaratıcılarının gitmek istediği bir yere gider ve başka bir şey yapmaz.

Öte yandan, dağıtılmış SCM'ler açık kazananlardı. Orada yaygın olarak kullanılan pek çok dağıtılmamış SCM görmüyorum.


5
Bu tarihi gerçekten takdir ediyorum.
jrwren

4
@TMN Haklısın! Aslında, Andrew Tridgell'in tersine mühendisliği ortaya çıktığında ve Larry McVoy BitKeeper lisansını değiştirdiğinde, Linus Torvalds'ın düşürmeye karar verdiği ve yerine bir yer bulması için kendisine bir hafta verdiği o kadar çok alev savaşı vardı. O zaman asıl yarışçı Monoton'du, ama gözyaşı yavaş geçti. Pek çok insan aynı anda değiştirmeler yaptı ve herkes yeni araçları kullanmaktan mutlu oldu. Bence Git önce 1.0, sonra Mercurial; Çarşı yaklaşık iki yıl sürdü.
Thaddee Tyl,

7
“Orada yaygın olarak kullanılan pek çok dağıtılmamış SCM görmüyorum.” Sektörde nerede olduğunuza bağlıdır. Performans, ClearCase ve svn hala çok yaygın olarak kullanılır, açık kaynak dünyasında çok fazla değil (svn hariç). Evet, ve Visual Source Safe ve MS Team, Windows mağazalarında her neyse.
Bob Murphy

13
"Tersine mühendislik" ile, sunucuya telnet atmayı ve "yardım" yazmayı kastediyorsunuz
alternatif olarak

3
Bunu hem DVCS hem de CVCS ile ilgili olarak söyleyebilirim: "Tao'nun tüm yazılımları geçerlidir ve puanlanmamalıdır." "Redmond'ın yazılımı dahil mi?" "Aman Tanrım, saate bak. Sınıf kovdu."
Bob Murphy

77

Linus Torvalds

Linus Git'in büyük bir savunucusudur ve yıllarca yoğun linux grubuna yoğun bir şekilde terfi etti ve oradan büyüdü. Tamamen Linus'un * nix topluluğu üzerindeki etkisine bağlı olduğunu düşünüyorum.

Şahsen ben hala Subversion kullanıyorum, ancak bu, faydadan çok tercih edilen bir şey.


12
Linus'un Linux'un görünürlüğü kadar kişisel olmadığını sanmıyorum - DVCS hakkında önceden bilgisi olmayan birisine (genel olarak yazılım geliştirme) güvenilirliğini ödünç verme olasılığını "kullanmak için daha fazla" söyleyebileceğin çok az şey var Linux çekirdeği".
Michael Borgwardt

6
Sadece bunun büyük bir savunucusu o - o ilk baskılarını yarattı biridir o Junio Hamano onu alabora olmadan önce
Marco Ceppi

44
Ne? Subversion'u neden tercih edersiniz?
yapılandırıcı,

11
Subversion'u tercihli veya faydalı olmak yerine alışkanlık ve atalet dışında kullanıyor olmanız anlamına gelmiyor mu? Bu yüzden hala kullanıyorum ve geri kalanımızın çoğundan da şüpheleniyorum ...
Cody Gray

7
@deadalnix: Çünkü Linux ve Linux, açık kaynak kodlu başka herhangi bir projeyle eşleşmeyen hayran çığlıkları yaşatıyor. Git için oldukça etkili bir sokak takımı olarak çalışıyorlar.
Tom Anderson,

34

Versiyon kontrol sistemiyle bilinen normal ağrı noktası branş birleşmesidir .

Bunu yaparken denedim gerek yoktur çalışmıyor olması ne kadar acı olabileceğini ve ne kadar önemli anlamak için çalışmak amacıyla, şubesi bulunan serbestçe çalışmaktan.

Linus Torvalds'ın bunu doğru yapmak için git yazdığını ve bir durumda on iki şubeyi bir arada birleştirmek için git kullandığı iddia edildiği gibi, öğrenmenin ilginç olması için çok ikna edici bir argümandır.

Yaklaşık bir yıl önce, hg ve git arasında seçim yapmak zorunda kaldığım durumdaydım ve yukarıdaki birleşme, git seçiminde önemli bir faktördü. İkincisi, Eclipse organizasyonu git'e geçti, bu yüzden Eclipse takımının Java projeleri için iyi olması bekleniyordu. Eclipse 3.7'nin piyasaya sürülmesiyle bu oldu. Bu konuda belki 6-9 ay erken kalmıştık.

Farklı ihtiyaçlar için hg kadar faydalı olabilir. Sun, çok dikkatli bir soruşturmaya dayanarak VCS'lerini seçti . Beyaz makaleleri bulmak ve nedenlerinin ne olduğunu görmek isteyebilirsiniz.


EDIT: Not, Mercurial'ın yapamayacağı bir şey olmadığını söylemiyorum, Eclipse'li Java için - ki bu bizim öncelikli odağımız - piyasa güçleri şu anda Windows için bile olsa güçlü olmaya devam etmeli ve omuzlarda durmamız gerekiyor. başkalarının ayakları değil.


5
+1 Hepsi dallarda. Bu analiz, git'in birleşme gücünü mercurial ile karşılaştırıldığında tartışıyor.
Amelio Vazquez-Reina

19
@AmV: Lütfen karışık URL'ler göndermeyin.
Cody Gray,


4
Buradaki amacını gördüğümden emin değilim. Dallanmada eşit derecede iyi olduklarını söylüyorsunuz (Git, Mercurial'ın yapamayacağı hiçbir şey yapmaz), ama iyi dallara ihtiyaç duyduğunuz için Git'i seçtiniz?
jalf

8
Git'in birleşmede Mercurial'dan daha iyi olduğuna dair ikna edici hiçbir örnek görmedim, kesinlikle bu cevaba değil. Neredeyse Hg'yi SVN veya CVS ile karıştırıyor gibisiniz.
Aarona

23

Git'in veya mercurial'ın neden daha iyi olduğunu söylemek yerine, popüler olmasının tek sebebi olduğunu söylemek yerine, topluma odaklanacağım.

Daha önce de vurguladığım gibi , Git topluluğu çok gürültülü ve kibirli. Birçoğu değerli programlarını şiddetle savunur. Git ve Mercurial savaşının gördüğüm çoğu, dünyadaki herkesin kutsal Git'i neden kullanmadığını merak eden git insanlar tarafından başlatıldı. Whygitisbetterthanx.com gibi siteler bile bu kibirleri başkalarına yem için yazılmış olan giriş bölümünde gösteriyor.

Herkesin böyle olduğunu söylemiyorum, ama çoğu zaman git insanlarla, git-git web siteleri ve git-git bloglarla karşılaştığım zaman, git gibi uygun bir DVCS olarak teklif edilmek yerine git boğazımdan aşağı atılıyormuş gibi hissediyorum. sistemi.


Buna karşılık, diğer DVCS toplulukları o kadar yüksek değil. Mercurial'ın "En iyi DVCS nedir?" Görene kadar var olduğunu bilmiyordum. SO hakkında soru. Git her yerde görünmekle birlikte, diğer DVCS'lerin bulunması zaman alıyor.


16
Başkalarına kibirli demek biraz kibirli değil mi?

21
@ Thorbjørn: Öyle. Yaptığım zaman hariç; o zaman sadece doğru.
Tom Anderson,

6
Sanırım gitmeye karşı alerjiniz var. Whygitisbetterthanx ve içeriğinin bir kısmını giriş okudum. Kibirli ya da kışkırtıcı bir şey göremiyorum. Sadece normal önyargıya sahip, bir şeyi tanıtmayı amaçlayan herhangi bir şey var.
back2dos

5
@ back2dos: "Git'in her şeyden daha iyi" olduğunu iddia etmesi oldukça kibirli. Ve bu destekleyici argümanının oldukça büyük parçaları yanlış ya da düzeltilmemiş ya da çarpı işaretidir.
jalf

5
@Agos: Ve neredeyse hepsi Git'e özgü olmayan . Diğer ürünleri hariç tutmak için sadece hedef alanlarını hareket ettirirler .
Aarona

14

Mercurial'ın özellikle düşük profilli olduğunu sanmıyorum. Fırın Hg üzerine inşa edilmiştir ve bir süredir Eclipse & Netbeans gibi IDE'lerde iyi bir destek olmuştur.

Konuştuğum geliştiricilerin çoğu, daha iyi Windows desteği nedeniyle Hg'yi tercih ediyor gibi görünüyor. Eğer Linux geliştiricileri olsaydık farklı bir hikaye olabilirdi.

Ayrıca gerçek "unutulmuş DVCS" olan "Çarşı" yı da kaçırıyorsunuz.

Kesinlikle, Linus'un çok karizmatik bir adam ve neredeyse eşit olmayan bir alfa ineği olduğu konusunda hemfikirim, bu yüzden birçok insan bu yüzden Git'i çekecek. Ayrıca, Git'in "Yaratılış efsanesi" Linus'u 6 gün boyunca Git'i yaratmak ve yedinci sırada dinlenmek için çabalamakla zorlar - veya buna benzer bir şey. Bir ürünün akılda kalıcı bir hikayesi olduğunda, çekiş kazanmak daha kolaydır.


6
... tamamen aynı fikirdeyim: asıl "unutulmuş DVCS" olan "Çarşı".
dagnelies

katılıyorum, ancak hg'nin fırın / joel kaynaklı maruz kalması git'in linustan maruz kaldığından daha yeni. hg catchup oynuyor
jk.

2
Orada aslında pek çok "unutulmuş DVCS" var, ancak birçoğu muhtemelen "düşük profilli", "odaklanmış" veya "niş" olarak tanımlanmış olsa da.
John Gaines Jr.

13

Alçakgönüllü bir fikir, ancak git iki parametreden dolayı tüm bu yutturmaca alabilir:

  1. Çok verimli
  2. Kullanımı eğlencelidir (bir tür çok özel bilgisayar bilimci yolunda)

Ayrıca, git github gibi katil bir uygulama edindi ve çok popüler bazı projeler kullanmaya karar verdi, bu da çok fazla görünürlük sağladı.


4
1. Bazı bölgelerde mercurial verimsiz midir? Aslında, uzun bir süre boyunca, http üzerinden daha etkiliydi, bu nedenle google kodu, geçen hafta açıklanan ve http üzerinden son zamanlarda eşit derecede iyi olan git desteğiyle karşılaştırıldığında, 2 yıldan fazla bir süredir kullandı. 2. Tamam 3. Eşdeğer
bitbucket.org var

1
Mercurial'ın verimsiz olduğunu mu söyledim? Hiç kullanmadım, böylece söyleyebilirim.
Thibault J

4
bu hiçbir şekilde bu soruna değinmez, en azından "ötekinde olmadı" part
jk.

1
Mercurial, depoya "boş klasörler" ekleyemiyor (bu şimdi düzeltildi mi bilmiyorum) ancak bir DVCS seçmek zorunda kaldığımda, sonunda bu amaç için gitmeye başladım. Bazı boş klasörlere ihtiyacım vardı.
Martin Marconcini

4
@ MartínMarconcini Ne demek "sonunda bu amaç için gitmeye gittim"? git de boş klasörleri desteklemiyor.
Max Nanasy

12

Burada işte üç faktör var: "beta geek media", "doğru zaman" ve "lideri takip et"

Beta Geek Medya

"Geeky faaliyetlerinin" tartışıldığı bir dizi kanal var. Yeni sürüm kontrol sisteminin görünümünü kesinlikle koruyacaklardı, fakat git daha fazlasını da kapsayacak. Neden? Çünkü Linus Torvalds başlangıçta bunu yazdı, halka açık bir şekilde tartıştı ve onu kamuya açıklıkla karşılaştığı sorununa çözüm olarak kullandı. Etkili bir şekilde, lkml'de bir alev savaşı olduğunda, beta geek medyası bunun hakkında bir makale yazacaktır. Git tartışma lkml'de başladı, bu yüzden diğer alternatiflerden daha fazla kapsama aldı. Ve slashdot'u Variety gibi okuyan beta meraklıları da yedi. Bunun nihai sonucu, git'in mercurial'ın on katı kadar makalesi olmasıdır.

Doğru zaman

Katkıda bulunan birçok büyük açık kaynaklı projenin merkezi kaynak kontrolü ile ilgili sorunları var. Açık kaynak büyüdükçe ve projelerin pek çok katkıda bulunma olasılığı artar, sorun daha da kötüleşiyor. Linux muhtemelen bundan acı çeken en iyi bilinen projedir, ancak birçok başkaları da var. Bu noktaya ulaşan birçok projeyle, bir tür gelişmiş VCS'ye ihtiyaç duyuldu. Git, Mercurial ve Bazaar burada en büyük kazananlar oldu. Arch ve Monotone biraz önce çok erken ve yutturmaca dalgası kaçırdı.

Lideri takip edin

Büyük projeler, katkıda bulunmasalar bile düzenli olarak kodu kontrol eden ve oluşturan izleyicilere sahiptir. Takipçiler, takip ettikleri projeyi getirmek için gerekli araçlara aşina olurlar, böylece bu araçlar daha fazla yararlanır. Büyük üç DVCS için "büyük beraberlik" projelerine bir göz atalım:

  • Git : Linux, Perl, jQuery, Raylarda Yakut, Tutulma, Gnome, KDE, QT, X
  • Mercurial : Java, Mozilla, Python
  • Çarşı : Ubuntu, Emacs

Git'in kullandığı daha "büyük beraberlik" projeleri var, bu yüzden daha fazla insan git ile aşina, daha fazla git öğretici yazılı var.


1
Haklı olabilirsiniz, ancak "büyük beraberlik" listeniz biraz yanıltıcı / önyargılı. Çarşı sitesine baktığımızda, birkaç büyük projeyi daha listelediler: MySQL, Bugzilla, Debian, GNU hepsi oldukça yaygın olarak bilinenler gibi görünüyor. Hg listesi de biraz daha büyük.
jalf

@jalf: böyle bir liste öznel olmalı. Kendi Linux ve Gnome'umu derledim, fakat asla Mozilla veya Emacs. Diğerleri tam tersi olabilir. Asıl soru şu ki, "bu projeyi kaç kişi kaynak kontrolünden çekecek"? İnsanları mevcut kaynağı çekmeleri için bir vcs kurma konusunda ilham vermemde en muhtemel olanları listeledik.
Sean McMillan

Yeterince adil. Objektif bir listedeki bir girişim olduğunu düşündüm (sonuçta, büyük projelerin her DVCS sistemini kullandığı listelerin izini sürmesi kolay olacaktı) :)
jalf

12

Temelde sadece kendini güçlendiren yutturmaca. Git en popüler olandır, bu yüzden en fazla reklam alır ve bu da daha popüler olmasını sağlar.

Git, Hg ve Bzr hepsi mükemmel DVCS sistemleridir, ancak korkutucu sayıda insan DVCS'yi Git ile eşitlemektedir ve bir DVCS'nin tüm güzel özelliklerinin Git'e özgü olduğunu düşünmektedir. Bu yüzden Git'i kullanıyorlar ve Git'i tavsiye ediyorlar ve "Git ahtapot birleştirmeleri yapabileceği için daha iyi" (Bazaar olabilir) veya "Git dağıtıldığı için daha iyi" diyorlar (yani herhangi bir DVCS, yani isim ) veya "Git daha iyi çünkü dallanmayı ve birleşmeyi kolaylaştırır" (yine, bu her DVCS için geçerlidir).

Ne yazık ki, alternatiflerin de size sunacakları çok şey olduğunu düşündüğüm için ve DVCS == Git'i düşündükleri için insanların eşsiz güçleri için Git'i seçmelerini tercih ederim.

Birisi belirli DVCS işaret edilerek, ne kadar zeki DVCS'es keşfetmek, genellikle gidip başkalarını söyleme "Hey, DVCS'es olan büyük, bunları kullanmak gerekir" ", daha doğrusu DVCS, ama bu ben DVCS'leri öğrendim harika, kullanmanız gerekir ".


11

Github. Github sosyal kodlamada öncüdür. Sürüm kontrolünü çok dikkat çeken bir sosyal platforma dönüştürdü ve açıkça Git'i destekliyor. Sosyal medya = daha büyük benimseme. Bitbucket, pek çok yeni özellik kazanmasına rağmen buhar kazanıyor, bu da muhtemelen bir rakip haline geliyor :)


7

Aslında, yutturmaca tüm DSVC'lerin buluşmalarıyla ilgili olduğunu düşünüyorum.

Ancak git savunucuları dürüst olmak ve her yerde konuşmayı sevmek için yorumlarında genellikle daha saldırgan oluyorlar.

Mercurial'ın yaygın olarak kullanıldığından, kesinlikle git kadar sık, belki daha fazla kullanıldığından şüpheleniyorum (Microsoft ve diğer büyük şirketler şimdi kullanıyor), ancak Mercurial'ı en sık kullanan insanlar bir dine dayanacak bir şeyi değil, çabucak kavrayabilecekleri bir DSVC istediler. Bu yüzden tartışmalarda bazı git kullanıcıları gibi proaktif olanlardan daha az sesli ve daha reaktifler.

Çarşı kesinlikle pek fazla konuşulmuyor, çünkü yalnızca birkaç büyük proje bunu kullanıyor ve Canonical'ın kullandığı bilinen başka hiçbir büyük şirket yok. Örneğin Google (git, mercurial, svn) ve büyük açık kaynaklı projelerle karşılaştırın ve neden hakkında gerçekten konuşmadıklarını görebilirsiniz. Fosil, bir devs niş için ilginç olan bir diğeridir, bu yüzden sadece sağladıkları özellikleri (gömülü wiki, sorun izleme ve forum gibi) arayanlar tarafından duyulmasının normal ve iyi olduğunu düşünüyorum.

Olduğu söyleniyor, sanırım yavaş yavaş hype döngüsünü azaltıyoruz ve birçok farklı çözüm kullanan birçok geliştirici, birinin kendi gereksinimlerine uygun olduğunu görmeye başlayabilir.

Ayrıca, Google Kod Barındırma ve SourceForge şimdi hem git hem de mercurial'a izin veriyor, bu yüzden GitHub özellikleri nedeniyle git'i seçtiğinizde olduğundan daha fazla projeye özgü bir seçenek haline geliyor.

Gerçek bir savaş yok, sadece ilginç araçlar.


Hype'ın genel olarak DVCS'lerle ilgili olmasını diliyorum, ancak gördüğüm her şeyden, hype Git'le ilgili ve çoğu insan DVCS ve Git'in temelde aynı şey olduğunu düşünüyor.
jalf

6

Bu soruya zaten çok fazla cevap verildiğini biliyorum ama biraz daha perspektif ekleyebileceğimi hissettim.

Bazaar'ı pek çok şey için yaratıldığından beri çok fazla kullandım. Kullandığım en büyük şey tek geliştirici ve bakımcısı olduğum AllTray projesiydi. Çarşı güzel. Sadece işe yarıyor, yolumdan çıkıyor ve neredeyse hiçbir zaman bir yardım sayfasına veya bunun için man sayfasına bakmam gerekmiyor. Bu, bazı olumsuzlukları olduğunu söyledi:

  1. Çekirdek VCS'nin bir parçası olması gereken tartışmasız bir çok işlevsellik değil. Tarihin bir ihanetini gerçekleştirme, çağrı cihazı üzerinden uzun çıktılar alma ya da “ortak” dallara sahip olma (örneğin, git tarzı depolar) gibi eklentiler olarak sağlanır.
  2. Eklentilerin çoğu o kadar da sağlam değil. Örneğin, colocated branş işlevselliği sunucu tarafında iyi çalışmıyor gibi görünüyor (en azından, hiç çalışmadım, verilen yoldaki şubenin ne zaman mevcut olmadığını söyleyerek hata veriyor). Tam orada senin önünde ve kanlı şeyi görebilirsin).
  3. “Klonlama” işlemi yok, her defasında bir tane dal çekersiniz. Yeni dalları etkin bir şekilde alabilmeniz için bir depoya sahip olmak istiyorsanız daha fazla iş yapmanız gerekir.
  4. Bazı projeler için acı verici bir şekilde yavaştır. Bazen "bzr branch lp: mysql" komutunu deneyin.
  5. Kancalar için güçlü desteği yoktur; Kanca sağlayan bzr eklentileri yazabilirsiniz, ancak sunucu tarafında rasgele kanca komut dosyalarına sahip olmanın standart bir yolu yoktur.

Geçenlerde AllTray gelişimi için git'e geçtim ve tüm projelerimi git'e taşımayı çok hızlı bir şekilde düşünüyorum . İpleri tanımak için harcanan biraz daha fazla zaman var, ancak buna değiyor gibi görünüyor. Fark ettiğim bazı şeyler:

  1. git clone nispeten hızlı bir işlemdir ve size klonladığınız depodaki tüm dalları hakkında bilgi verir.
  2. Ek uzaktan depolar eklemek ağrısızdır ve böylece birden fazla şubeye sahip birçok depoyu izleyebilirsiniz.
  3. Pro Git kitaptır çevrimiçi mevcut eKitap okuyucu için de dahil olmak üzere, ve birden fazla biçimde cihazlara-ve zor bir okuma değil.
  4. git, Çarşı'ya göre daha kolay görünüyor ve bunu yapmak için belirli bir API kullanmanız gerekmiyor. (Not: Bu hem baş aşağı hem de aşağı taraf).
  5. git yerleşik bir ikiye sahiptir ve bu özelliğin faydasını yeterince vurgulayamıyorum.
  6. GitHub oldukça hoş.
  7. gitosisSistem aynı zamanda oldukça güzel. Bunu, bir Çarşı'da bir eklenti dışında başka bir şeyle nasıl uygulayacağından bile emin değilim ve bu kadar verimli bir yerde olacağını hayal bile edemiyorum.

Uzun lafın kısası: Çok uzun zamandır bzr kullandım, ama git çabukluğunu bana kanıtlıyor.


5

Git'i kullanarak, geliştirme yaptığınızda her zaman aynı yerel dizinde kalırsınız ve sadece git checkout branchnamedallar arasında geçiş yaparsınız (her zaman "hafif" özellik dalları kullanırım, bu yüzden bu benim için çok önemli bir özelliktir).

Mercurial belgelerine ve ders notlarına baktığımızda, farklı gelişme dallarıyla başa çıkmanın tercih edilen yolunun klonlayarak yeni depolar oluşturmak olduğu anlaşılıyor. Bu eğitici örnek.

Mercurial'da git ile aynı şeyi yapabileceğinize inanıyorum, fakat nedense Mercurial belgeleri (okudum) hemen hemen her zaman bir depo klonu oluşturarak dallanma gösterir.

(Her gün git kullanırım. Mercurial ile ilgili çok az deneyimim var, onunla oynadım ve birkaç ders verdim)


2
Ben her zaman hg olarak 'adlandırılmış' dallar kullandım. Onları iyi destekliyor. hg branch foo, daha hg up foosonra ... Şube klonu, sıradan gelişme için bazı güçlü zayıf yönlere sahiptir.
Paul Nathan,

Hmm, yani Git'in Hg'den daha iyi olduğunu söylüyorsun, çünkü Hg önem verdiğin özelliği desteklerken, Hg topluluğu alternatif bir yaklaşımın üstün olduğunu düşünüyor?
jalf

1
1: Acaba: Hg belgelerinde "klonlama yoluyla dalı" odaklanma (örneğin bakınız Neden hgbook.red-bean.com/read/a-tour-of-mercurial-the-basics.html ve mercurial.selenic. com / rehber )? Bana göre, dal başına bir depo olması dağınık görünüyor. 2: Git'in daha iyi olduğunu söylemiyorum, cevabım benim için (Hg acemi) ikisi arasında bir fark gibi görünen bir konu üzerine yapılan bir gözlemdir. Farklılığın teknikten daha kültürel olduğu görülüyor, çünkü Hg “aynı depodaki şubeyi” de destekliyor.
codeape

3
Mercurial çevrimiçi olarak birçok güncel bilgi kaynağından muzdariptir; Birçoğu git kullanan insanlar tarafından çoğaltıldı ve geliştikçe mercurial'ın özellikleri hakkında güncel bilgi sahibi değildi. Klonlanmış depoları tercih etmek için kullanılan eski nedenlerin çoğu artık mercurial'ın Modern versiyonlarında geçerli değildir (şimdi adlandırılmış dallar kapatılabilir ve isterseniz, git dallarına benzer bir kullanım şekli veren bir yer imleri sistemi vardır).
Stephen M. Redd

4

Son birkaç haftayı bu kadar rants gördüğümü bilmiyorum, ama hepsi Mercurial ve / veya Bazaar'ın Git'ten objektif olarak daha iyi olduğu gerçeğini düşünüyor gibi görünüyorlar. Kullanılabilirlik ortak bir tema gibi görünüyor. Evet, Git'i öğrenmek CVS ve Subversion'u kullandıktan sonra şaşırtıcı derecede zordu, fakat bu noktada başka bir paradigma kayması oluşturmadığı sürece başka bir VCS ile takas etmek istemem . Ve bir özellikler tablosuna işaret etmek bana ne kadar esnek, genişletilebilir, güvenli veya zahmetsiz olduğunu söyleyecek . Örneğin, varsayılan olarak git-diff renkler ve bir çağrı cihazı kullanılır. Elbette aynı diff ... | colordiff | less -Rşeyi veya başka bir şeyi alabilirim, ama neden birinin diğerinden daha üstün olduğu açık olmalı.


Bu nedenle tartışmanın değişmesi gerektiğini düşünmüyorum - açıkça bildiğiniz bir aracı kullanmak, diğerinin ne kadar kolay olursa olsun, bir diğerine geçmektan daha kolay. Herhangi bir DVCS savunucusunun gerçekten de Bazaar veya Mercurial yerine gitmekte olduğunuzu çok fazla kaçırdığınızı iddia edebileceğini sanmıyorum, aralarında pek bir şey yok.
ZoFreX

3

Adil olmak gerekirse, git'e karşı merkür savunucuları, git'e karşı merkezi savunucularla karşılaştırıldığında çok az ve uzak olduğunu düşünüyorum. Ancak, nedenlerini özetlemek kolaydır:

Git, programcılar için sürüm kontrolüdür. Mercurial işletmeler için sürüm kontrolüdür. Merkezileştirme, özellikle kişisel bilgisayar devrimi öncesi tasarlandığını düşünerek, sürüm kontrolünün icat edilmesinde yeterli bir ilk deneme idi.

Programcılar için sürüm kontrolünden kastettiğim, programcıların genel olarak öğrenme kolaylığı konusunda esneklik sağlamalarıdır. Sonuçta, bilgisayarları, eğitimsiz kişilerin yapamadıklarını yapma esnekliği için ezoterik dilleri öğrenmek için harcayacağız. Git, programcılara istedikleri şekilde kullanma esnekliği verir, pahasına bu esnekliği güvenli bir şekilde kullanmayı öğrenmek daha uzun sürer. Politikaları uygulamak için kısıtlamaların uygulanmasına izin veriyor, ancak bu şekilde kullanıma sunulmuyor. Not : Kullanım kolaylığı yerine öğrenme kolaylığı demiştim . Bunu öğrendiğinizde, git etmek kadar kolaydır kullanmak başka VCS olarak ve artan hız ve özellikleri nedeniyle genellikle daha kolaydır.

Bazı programcılar istediklerini yapacak kadar öğrenir, sonra bunu yapmanın yeni yollarını öğrenmeye direnir. İşletmeler bu kişilerin birçoğunu işe alıyor ve istihdam ediyorlar, bu nedenle kullandıkları araçlarda belirli bir aşinalık derecesinde değişiklik yapmak istiyorlar. İşletmeler ayrıca programcılarının işlerini yapmak için yeterli esnekliğe sahip olmalarını ister, ancak eğitim veya başlangıçtaki göçü zorlaştıracak kadar değil. Merkür'ün girdiği yer burasıdır. Git gücünün çoğuna sahiptir, ancak biraz daha kolay bir göç yolu.

Git'in sadece yutturmaca ya da Linus'un onayından dolayı popüler olduğunu söylemenin adil olduğunu sanmıyorum. Muhtemelen bunu deneyen pek çok insanın hesabını oluşturuyor , ancak onunla sadık kalıyorlar ve destekliyorlar çünkü onlar için iyi çalışıyor, saf ve basit.




1

Geçenlerde kişisel projeler için bir sürüm kontrol sistemi arıyordum, bu yüzden bunlardan birkaçını denedim. Komut satırında pratik olarak okuma yazma bilmiyorum ve GUI'lerin mevcut olmasına rağmen Git'in beni biraz tereddüt eden komut satırı aracılığıyla kullanılma amaçlı olduğunu duymuştum. Dürüst olmak gerekirse, almak için gülünç kolay oldu, ve ben gerçekten zevk alıyorum. Dokümantasyon, yeni bir teknolojinin benimsenmesinde çok büyük bir etkendir ve Git, açık ve elverişli olan gülünç derecede basit belgelere sahiptir. SVN ve Bazaar gibi diğer alternatifler harikaydı, sadece Git kadar kolay olmadı. Github aynı zamanda büyük bir faktördür, çünkü şu anda açık kaynak hareketinde bu kadar merkezi olmuştur. Kod ve proje alışverişi yapmak için (ironik) merkezi bir konuma sahip olmak, başlı başına bir oyun değiştiricidir.


1

Sadece benim 2 ¢ - Alternatifleri tercih ettim çünkü radtool dili ya da aşırı akademik bir yüksek seviye dili yerine C ile yazılmış. Avantajları hızlı ve verimli olması ve açıklayamadığım bir hata veya davranışla karşılaştığımda RTFS yapabileceğim. Ayrıca, devasa tercümanlar / çalışma zamanları içermeyen, kendi kendine barındırılan küçük geliştirme ortamlarında da kullanılmasını mümkün kılıyor; bu, doğrudan bir git deposundan doğrudan çekip, bu tür sistemler üzerinde derleme yapıp, en son kaynağı başka bir yere götürmek ve rsync yapmak zorunda kalacağım anlamına geliyor.


1
Git'i seçmemin sebebi de buydu, çünkü python yerine derlenmiş bir dilde yazılmıştı ve bu yüzden usb kalemimde başka bir araçla birlikte taşınabilir bir git versiyonuna sahip olabiliyorum.
Coyote21

Yine de, bu tam olarak Facebook'un mercurial'ı kullanmayı tercih etmesinin sebebi bu : ikisinin de performansından memnun değillerdi, ancak mercurial'ın performansını iyileştirmeyi daha kolay buldular (çoğu işlem için, sadece küçük bir yüzde git genel olarak) önemli bir marjla (bunu bir dosya izleme servisi ile entegre ederek yaptıklarını, böylece neyin değişip neyin değişmeyeceğini anlayabilmelerini sağladı, burada ayrıntıları görün ) çünkü pitonun C ile çalışmaktan daha kolay olduğu için
Jules

1

Birkaç yıl önce svn'den taşınmaya karar verdiğinde , GNOME masaüstü projesinin neden hg ve bzr'yi seçtiğini okumak ilginizi çekebilir . Elbette yol boyunca birçok ateşli dini tartışma vardı, ancak bu GNOME Wiki sayfası bu topluma uyguladıkları artıları ve eksileri güzel bir şekilde özetliyor.


0

Apple’ın şimdi hedef c topluluğuna itme ile ilgili olduğu söylenmedi, yakın zamanda Xcode 4'te yeni bir uygulama oluşturduysanız, Git deposu yapmak isteyip istemediğinizi otomatik olarak sorduğunu fark etmişsinizdir.

Verilmiş Xcode 4 yalnızca birkaç aydır var ve Gits'in önceki başarısını etkilemiyor, ancak hepimiz Apple'ın kısa sürede nasıl popüler olabileceğini biliyoruz.


-1

Hg (fırın) 'dan git (github)' a geçiyorum. Şu an yaklaşık bir yıl boyunca fırın kullandım. Benim için hg'nin dezavantajı yok. Yapmam gereken her şeyi yapabilirim. Bu yüzden harika.

Neden şu anda kullanıyorum?

Şu an sadece üç sebep var.

  1. gitHub, mükemmel olan özleri sunar
  2. gitHub harika sosyal özellikler sunuyor
  3. Geliştirici sunumları ve atölye çalışmaları yaparken, örneklerimi her zaman hg ve git'te yayınladım. Git Hg'ye kıyasla yaklaşık 10 kat daha fazla ziyaretçi var!

Üçüncü olanın en önemlisi olduğunu düşünüyorum.

Thorsten


-2

Saf şans Sanırım, şimdiye kadar bir şeyin neden işe yarayıp yaramadığını kanıtlamak neredeyse imkansız. Linus muhteşem bir şey inşa edebilir ve başarılı olamaz.

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.