Dalam beberapa tahun terakhir, hype di sekitar Git meningkat pesat. Semua orang tahu tentang Git, tidak ada yang tahu tentang alternatif.
Yang lain seperti Mercurial tampaknya tidak diperhatikan. Keduanya telah dirilis pada tahun 2005, dan menyediakan fungsionalitas serupa. Selain itu, Mercurial umumnya dianggap lebih mudah digunakan, lebih intuitif dan memiliki UI yang lebih baik untuk waktu yang lama. Oleh karena itu, dapat diasumsikan bahwa ini akan menjadi alternatif yang populer, terutama bagi mereka yang baru untuk kontrol versi terdistribusi. Namun, tampaknya tidak diketahui oleh kebanyakan orang, tidak seperti Git yang berhasil dengan cukup baik.
Maksud dari posting ini adalah untuk mencoba memahami fenomena ini dengan lebih baik.
Bagaimana bisa Git mendapatkan semua bagian dari kue? Apakah mereka entah bagaimana menggunakan pemasaran yang lebih baik? Apakah karena komunitasnya lebih ... ahem ... "verbose"? Apakah itu karena nama "Linus"? Apakah karena gambarnya yang culun?
Apa pendapatmu?
sumber
Jawaban:
Saya percaya layanan seperti GitHub atau Gitorious adalah faktor besar. Sangat penting bagi orang-orang bahwa mereka dapat meng-host barang-barang mereka di suatu tempat dan terutama GitHub adalah layanan hebat untuk itu.
Untuk lincah, tidak ada layanan seperti itu ketika DVCS menjadi populer (setidaknya tidak ada yang saya sadari). Anda memiliki Bitbucket sekarang dan mungkin yang lain, tetapi GitHub telah ada cukup lama, itu sudah terkenal dan semakin baik.
sumber
Saya melihat banyak jawaban untuk ini yang bergantung pada perasaan yang penulis miliki ketika mendengar tentang satu atau lebih SCM lainnya. Yang lain mengatakan itu semua hanya keberuntungan. Saya percaya keberuntungan dapat dilacak kembali dalam sejarah.
Saya akan berbicara tentang sejarah.
Git dan Mercurial diciptakan secara bersamaan untuk menyelesaikan masalah yang sama. Pada masa itu, kernel Linux terpaksa berhenti menggunakan BitKeeper , SCM terdistribusi eksklusif yang telah digunakan selama 3 tahun. Alasannya adalah Larry McVoy, CEO BitMover, perusahaan di belakang BitKeeper, berhenti memberikan perangkat lunaknya secara gratis kepada pengembang Linux, karena seseorang di dalam komunitas Linux telah merekayasa baliknya.
Linus Torvalds, tidak puas dengan apa yang sudah ada, kemudian mulai bekerja pada SCM baru yang ia akan segera hubungi Git. Segera setelah itu, Matt Mackall memulai proyek Mercurial dengan alasan yang sama.
Setelah beberapa waktu mengembangkan proyek-proyek ini secara terpisah, Matt Mackall menyajikan versi lanjutan dari SCM-nya dan membandingkannya dengan cara tertentu, membandingkannya dengan Git (yang baru berumur beberapa minggu). Linus mempertimbangkan untuk menggunakannya sebagai ganti Git untuk pengembangan Kernel, tetapi membatalkan ide ketika ia menyadari bahwa Mercurial menggunakan Changesets untuk mencatat modifikasi revisi . Dia takut itu terlalu dekat dengan cara kerja BitKeeper, dan dia tentu tidak ingin apa pun yang bisa membuat seseorang berkata, "Mereka membangun kloning BitKeeper".
Karena itu Git digunakan untuk pengembangan Kernel alih-alih Mercurial, tetapi keduanya secara teknis relevan. Hasil akhirnya adalah, Git memulai dengan menjadi benar-benar digunakan di mana ia dirancang untuk digunakan, sementara Mercurial tidak secepat untuk menemukan penggunaan FOSS besar pertama. Karena dianugerahi dengan desain yang sangat bagus, dan berkat ketekunan Matt Mackall, akhirnya menjadi terkenal dan digunakan untuk proyek-proyek besar, dunia nyata.
Hari ini, keduanya terkenal. Mana yang paling terkenal tidak mungkin dikatakan. Google Code baru-baru ini mengintegrasikan Git, sementara itu memiliki Mercurial untuk waktu yang lama. Banyak proyek yang sangat besar dan terkenal digunakan.
Saya kira apa yang saya maksudkan adalah, ketika alasan mengapa Anda memulai sebuah proyek hilang, lebih sulit untuk mendapatkan popularitas, tetapi masih layak.
Bazaar adalah SCM lain yang sangat terkenal di dunia GNU, tetapi tidak begitu banyak di luar itu, karena ia dibangun dengan tujuan memuaskan komunitas GNU. Perangkat lunak seringkali pergi ke tempat yang diinginkan oleh pembuatnya, dan tidak lebih jauh.
Di sisi lain, SCM yang didistribusikan adalah pemenang yang jelas. Saya tidak melihat banyak SCM non-distribusi yang banyak digunakan di luar sana.
sumber
Linus Torvalds
Linus adalah penganjur besar Git dan mempromosikannya secara besar-besaran ke kelompok inti linux selama bertahun-tahun dan berkembang dari sana. Saya yakin itu sepenuhnya karena pengaruh Linus terhadap komunitas * nix.
Secara pribadi saya masih menggunakan Subversion, tapi itu dari preferensi daripada utilitas.
sumber
Titik sakit yang biasa dengan sistem kontrol versi adalah penggabungan cabang .
Anda harus mencobanya ketika tidak berhasil untuk memahami betapa menyakitkannya hal itu dan betapa pentingnya bekerja, agar dapat bekerja secara bebas dengan cabang-cabang.
Mengetahui bahwa Linus Torvalds menulis git untuk melakukan hal ini dengan benar, dan bahwa dalam satu situasi ia menggunakan git untuk menggabungkan dua belas cabang sekaligus, ini adalah argumen yang sangat meyakinkan agar git menjadi menarik.
Saya berada dalam situasi sekitar setahun yang lalu di mana saya harus memilih antara hg dan git, dan penggabungan di atas adalah salah satu faktor penting dalam memilih git. Yang kedua adalah bahwa organisasi Eclipse beralih ke git, sehingga tooling Eclipse diharapkan baik untuk proyek-proyek Java. Dengan dirilisnya Eclipse 3.7 ini telah terjadi. Kami mungkin 6-9 bulan lebih awal dalam hal ini.
Untuk kebutuhan yang berbeda, hg mungkin sama bermanfaatnya. Sun memilihnya untuk VCS mereka berdasarkan investigasi yang sangat hati-hati. Anda mungkin ingin menemukan kertas putih dan melihat apa alasannya.
EDIT: Catatan, saya tidak mengatakan bahwa ada sesuatu yang Mercurial tidak dapat lakukan, hanya saja untuk Java dengan Eclipse - yang merupakan fokus utama kami - kekuatan pasar saat ini terkuat untuk git, bahkan di bawah Windows, dan kami harus berdiri di bahu orang lain, bukan kaki mereka.
sumber
Alih-alih mengatakan mengapa git atau lincah lebih baik dan mengatakan itu satu-satunya alasan populer, saya akan fokus pada komunitas.
Seperti yang saya tekankan sebelumnya , komunitas Git sangat keras dan sombong. Sebagian besar akan dengan kuat mempertahankan program berharga mereka. Sebagian besar perang Git vs Mercurial yang saya lihat dimulai oleh orang-orang git yang bertanya-tanya mengapa semua orang di Bumi tidak menggunakan git suci. Situs- situs seperti whygitisbetterthanx.com bahkan menunjukkan kesombongan ini dalam pendahuluan, yang ditulis untuk menyulut umpan orang lain.
Saya tidak mengatakan semua orang seperti ini, tetapi sebagian besar waktu ketika saya bertemu orang git, situs web pro-git, dan blog pro-git saya merasa seperti git didorong ke tenggorokan saya alih-alih ditawarkan sebagai DVCS yang layak sistem.
Sebaliknya, komunitas DVCS lainnya tidak sekeras itu. Saya tidak tahu Mercurial ada sampai saya melihat "Apa DVCS terbaik?" pertanyaan di SO. Ketika git muncul di mana-mana, DVCS lain membutuhkan waktu untuk menemukannya.
sumber
Saya tidak berpikir Mercurial sangat low profile. Kiln dibangun di atas Hg & telah ada dukungan yang baik dalam IDE seperti Eclipse & Netbeans untuk sementara waktu sekarang.
Sebagian besar pengembang yang saya ajak bicara tampaknya lebih suka Hg karena dukungan Windows yang lebih baik. Jika kami adalah pengembang Linux, itu mungkin cerita yang berbeda.
Anda juga kehilangan "Bazaar" yang merupakan "DVCS" yang sesungguhnya dilupakan.
Tentu saja saya setuju bahwa Linus adalah seorang pria yang sangat karismatik dan seorang nerd yang hampir tidak ada taranya sehingga banyak orang akan tertarik pada Git karena itu. Juga, "Mitos penciptaan" Git sangat menarik dengan Linus yang bekerja selama 6 hari untuk menciptakan Git dan beristirahat pada hari ketujuh - atau sesuatu seperti itu. Ketika suatu produk memiliki kisah yang mudah diingat, lebih mudah untuk mendapatkan daya tarik.
sumber
Itu pendapat yang sederhana, tetapi git mungkin mendapatkan semua sensasi ini karena dua parameter:
Plus, git punya beberapa aplikasi pembunuh seperti github, dan beberapa proyek yang sangat populer memutuskan untuk menggunakannya, yang memberinya banyak visibilitas.
sumber
Ada tiga faktor yang bekerja di sini, "beta geek media", "waktunya tepat", dan "ikuti pemimpin"
Beta Geek Media
Ada sejumlah saluran yang mendapatkan diskusi tentang "kegiatan geeky". Mereka pasti akan menutupi tampilan sistem kontrol versi baru, tetapi mereka lebih banyak membahas git. Mengapa? Karena Linus Torvalds menulisnya pada awalnya, membantahnya secara terbuka, dan menggunakannya sebagai solusi untuk masalah bitkeeper yang dipublikasikan dengan baik. Secara efektif, setiap kali ada perang api pada lkml, media beta geek akan menulis artikel tentang itu. Diskusi Git dimulai pada lkml, sehingga mendapat lebih banyak liputan daripada alternatif lain. Dan beta geeks yang membaca slashdot seperti Variety memakannya. Hasil akhir dari hal itu adalah bahwa git memiliki artikel sepuluh kali lebih banyak daripada lincah.
Waktunya tepat
Proyek open source besar dengan banyak kontributor memiliki masalah dengan kontrol sumber terpusat. Ketika sumber terbuka tumbuh, dan proyek menjadi lebih mungkin untuk memiliki banyak kontributor, masalahnya menjadi lebih buruk. Linux mungkin adalah proyek yang paling terkenal menderita dari ini, tetapi ada banyak yang lain. Dengan banyak proyek yang mencapai titik ini, beberapa jenis VCS canggih diperlukan. Git, Mercurial, dan Bazaar adalah pemenang besar di sini. Arch dan Monoton sedikit terlalu dini, dan melewatkan gelombang hype.
Ikuti sang pemimpin
Proyek besar memiliki pengikut yang memeriksa dan membuat kode secara teratur, bahkan jika mereka tidak berkontribusi. Para pengikut menjadi terbiasa dengan alat yang dibutuhkan untuk mengambil proyek yang mereka ikuti, sehingga alat-alat itu dapat digunakan lebih banyak. Mari kita lihat proyek "undian besar" untuk tiga DVCS besar:
Git memiliki lebih banyak "proyek menarik" proyek yang menggunakannya, sehingga lebih banyak orang yang akrab dengan git, ada lebih banyak tutorial git yang ditulis.
sumber
Ini terutama hanya sensasi yang memperkuat diri sendiri. Git adalah yang paling populer, sehingga mendapat publisitas paling banyak, yang membuatnya semakin populer.
Git, Hg, dan Bzr semuanya adalah sistem DVCS yang sangat baik, tetapi sejumlah orang yang menakutkan menyamakan DVCS dengan Git, dan berpikir bahwa semua fitur indah dari DVCS adalah unik untuk Git. Jadi mereka menggunakan Git, dan merekomendasikan Git, dan mengatakan hal-hal seperti "Git lebih baik karena bisa melakukan penggabungan gurita" (Begitu juga Bazaar), atau "Git lebih baik karena didistribusikan" (demikian pula setiap DVCS, maka namanya ), atau "Git lebih baik karena membuat percabangan dan penggabungan menjadi mudah" (sekali lagi, ini berlaku untuk setiap DVCS).
Sedihnya, karena saya merasa alternatif memiliki banyak hal untuk ditawarkan juga, dan saya lebih suka orang memilih Git karena kekuatannya yang unik, daripada hanya karena mereka berpikir DVCS == Git.
Ketika seseorang menemukan betapa cerdiknya DVCS, dengan menunjuk ke satu DVCS tertentu, mereka sering tidak pergi dan memberi tahu orang lain "hei, DVCS bagus, Anda harus menggunakannya", melainkan, "DVCS yang saya belajar tentang DVCS dari bagus, Anda harus menggunakannya ".
sumber
Github. Github adalah pelopor dalam pengkodean sosial. Itu mengubah kontrol versi menjadi platform sosial yang menarik banyak perhatian, dan itu jelas hanya mendukung Git. Media sosial = adopsi yang lebih besar. Bitbucket mulai mendapatkan banyak fitur baru, membuatnya menjadi saingan :)
sumber
Yah sebenarnya saya pikir hype adalah tentang semua pertemuan DSVC.
Tetapi para advokat git lebih vokal, seringkali lebih agresif dalam komentar mereka untuk jujur dan suka membicarakannya di mana-mana.
Saya menduga Mercurial digunakan secara luas, tentu saja sesering git, mungkin lebih (Microsoft dan perusahaan besar lainnya menggunakannya sekarang), tetapi orang yang menggunakan Mercurial paling sering hanya menginginkan DSVC yang dapat mereka pahami dengan cepat, bukan sesuatu yang menjadi dasar agama. Jadi mereka paling tidak vokal dan lebih reaktif dalam diskusi daripada proaktif seperti beberapa pengguna git.
Bazaar tidak banyak dibicarakan karena hanya beberapa proyek besar yang diketahui yang menggunakannya dan tidak ada perusahaan besar selain Canonical yang menggunakannya. Bandingkan dengan Google (git, mercurial, svn) dan proyek open-source besar misalnya dan Anda dapat melihat mengapa itu tidak benar-benar dibicarakan. Fosil adalah satu lagi yang menarik untuk niche devs, jadi saya kira itu normal dan baik bagi mereka untuk didengar hanya oleh mereka yang mencari fitur yang mereka sediakan (seperti embedded wiki, pelacakan masalah dan forum).
Yang sedang berkata, saya pikir kita perlahan turun siklus hype dan banyak pengembang yang menggunakan beberapa solusi yang berbeda dapat mulai melihat mana yang sesuai dengan kebutuhan mereka.
Juga, Google Code Hosting dan SourceForge sekarang memungkinkan git dan lincah sehingga menjadi lebih spesifik untuk proyek tertentu daripada sebelumnya ketika Anda memilih git karena fitur GitHub.
Tidak ada perang nyata, hanya berbagai alat yang menarik.
sumber
Saya tahu sudah ada banyak jawaban untuk pertanyaan ini, tetapi saya merasa saya bisa menambahkan sedikit lebih banyak perspektif.
Saya menggunakan Bazaar cukup banyak sejak itu dibuat untuk berbagai hal. Hal terbesar yang saya gunakan untuk itu adalah proyek AllTray, di mana saya (saat ini) satu-satunya pengembang dan pengelola. Bazaar bagus. Itu hanya berfungsi, itu tetap keluar dari jalan saya, dan hampir tidak pernah saya harus melihat halaman - help atau halaman manual untuk itu. Yang mengatakan, ada beberapa kelemahannya:
Saya baru-baru ini beralih ke git untuk pengembangan AllTray, dan saya sangat cepat mempertimbangkan untuk memigrasi semua proyek saya ke git. Ada lebih banyak waktu di muka dihabiskan untuk mengenal tali, tetapi tampaknya layak. Beberapa hal yang saya perhatikan:
git clone
adalah operasi yang relatif cepat, dan memberi Anda informasi tentang semua cabang yang ada di repositori yang Anda kloning.gitosis
Sistem ini juga cukup bagus. Saya bahkan tidak yakin bagaimana seseorang akan mengimplementasikannya selain sebagai plugin di Bazaar, dan saya tidak bisa membayangkan itu akan menjadi seefisien mungkin.Singkat cerita: Saya sudah menggunakan bzr untuk waktu yang sangat lama, tetapi git dengan cepat membuktikan betapa megahnya saya.
sumber
Menggunakan git, Anda cenderung untuk selalu berada di direktori lokal yang sama ketika Anda melakukan pengembangan, dan cukup melakukan
git checkout branchname
untuk beralih antar cabang (saya menggunakan cabang fitur "ringan" sepanjang waktu, jadi ini adalah fitur yang sangat penting bagi saya).Melihat dokumentasi dan tutorial Mercurial, tampaknya cara yang disukai untuk menangani berbagai cabang pembangunan adalah dengan membuat repositori baru dengan mengkloning. Tutorial ini adalah contohnya.
Saya percaya Anda dapat melakukan hal yang sama di Mercurial seperti di git, tetapi untuk beberapa alasan dokumentasi Mercurial (yang telah saya baca) hampir selalu menunjukkan percabangan dengan membuat klon repositori.
(Saya menggunakan git setiap hari. Saya memiliki sedikit pengalaman dengan lincah, saya telah bermain dengannya dan mengikuti beberapa tutorial)
sumber
hg branch foo
, kemudianhg up foo
nanti ... Klon-untuk-cabang memiliki beberapa kelemahan kuat untuk pengembangan biasa.Saya tidak tahu berapa banyak kata-kata kasar seperti yang saya lihat beberapa minggu terakhir, tetapi mereka semua menganggapnya sebagai fakta bahwa Mercurial dan / atau Bazaar secara objektif lebih baik daripada Git. Kegunaan tampaknya menjadi tema umum. Ya, mempelajari Git ternyata sangat sulit setelah menggunakan CVS dan Subversion, tetapi pada titik ini saya tidak ingin menukarnya dengan VCS lain kecuali itu merupakan perubahan paradigma lain . Dan menunjuk ke daftar fitur akan memberi tahu saya sedikit tentang seberapa fleksibel, dapat diperluas, aman, atau mudahnya itu. Misalnya, secara default
git-diff
menggunakan warna dan pager. Tentu saya bisa mendapatkan yang sama dengandiff ... | colordiff | less -R
atau sesuatu, tetapi harus jelas mengapa yang satu lebih unggul dari yang lain.sumber
Agar adil, saya pikir advokat git vs mercurial sedikit dan jauh di antara dibandingkan dengan advokat git vs terpusat. Namun, alasannya mudah diringkas:
Apa yang saya maksud dengan kontrol versi untuk programmer adalah bahwa programmer pada umumnya lebih menyukai fleksibilitas daripada kemudahan belajar. Bagaimanapun, kami bersedia menghabiskan waktu bertahun-tahun untuk belajar bahasa esoterik agar memiliki fleksibilitas untuk membuat komputer melakukan apa yang tidak dapat dilakukan oleh orang yang tidak terlatih. Git memberi para programmer fleksibilitas untuk menggunakannya sesuka mereka, dengan mengorbankan waktu lebih lama untuk belajar bagaimana menggunakan fleksibilitas itu dengan aman. Ini memungkinkan pembatasan diberlakukan untuk menegakkan kebijakan, tetapi tidak muncul begitu saja. Catatan saya katakan kemudahan belajar daripada kemudahan penggunaan . Setelah Anda mempelajarinya, git mudah digunakan seperti VCS lainnya, dan seringkali lebih mudah karena peningkatan kecepatan dan fitur.
Beberapa programmer cukup belajar untuk melakukan apa yang mereka inginkan, kemudian menolak mempelajari cara-cara baru untuk melakukannya. Perusahaan mempekerjakan dan mempekerjakan banyak dari orang-orang ini, sehingga mereka ingin setiap perubahan dalam alat yang mereka gunakan memiliki tingkat keakraban tertentu. Perusahaan juga ingin programmer mereka memiliki fleksibilitas yang cukup untuk melakukan pekerjaan mereka, tetapi tidak terlalu mempersulit pelatihan atau migrasi awal. Di sinilah mercurial cocok. Ia memiliki sebagian besar kekuatan git, tetapi jalur migrasi agak lebih mudah.
Saya tidak berpikir adil untuk mengatakan git hanya populer karena hype, atau dukungan Linus. Itu mungkin menjelaskan bagi banyak orang yang mencobanya , tetapi mereka tetap menggunakannya dan mempromosikannya karena itu bekerja dengan baik untuk mereka, murni dan sederhana.
sumber
Pengembangan NetBSD menggunakan CVS dan hanya itu yang penting.
sumber
Itu punya nama lebih tajam, lebih empuk yang cocok dengan baik untuk permainan kata-kata.
sumber
Saya baru-baru ini mencari sistem kontrol versi untuk proyek-proyek pribadi, jadi saya hanya mencoba banyak dari mereka. Saya pada dasarnya buta huruf di baris perintah, dan saya pernah mendengar bahwa meskipun GUI tersedia, Git benar-benar dimaksudkan untuk digunakan melalui baris perintah, yang membuat saya agak ragu-ragu. Jujur saja, itu sangat mudah untuk diambil, dan saya benar-benar menikmatinya. Dokumentasi adalah faktor besar dalam adopsi teknologi baru, dan Git memiliki banyak dokumentasi sederhana yang sangat jelas dan tersedia. Alternatif lain seperti SVN dan Bazaar sangat bagus, mereka tidak membuatnya semudah Git. Github juga merupakan faktor besar, karena telah menjadi sangat penting bagi pergerakan open source saat ini. Memiliki (secara ironis) lokasi terpusat untuk bertukar kode dan proyek melalui adalah pengubah permainan itu sendiri.
sumber
Hanya 2 ¢ saya - saya memilih git daripada alternatif karena ditulis dalam bahasa C daripada bahasa radtool atau bahasa tingkat tinggi yang terlalu akademis. Keuntungannya adalah cepat dan efisien dan saya bisa benar-benar RTFS jika saya menemukan bug atau perilaku yang tidak bisa saya jelaskan. Hal ini juga memungkinkan untuk digunakan pada lingkungan pengembangan kecil yang di-host sendiri yang tidak menyertakan interpreter / runtime raksasa, yang berarti saya dapat langsung menarik dari repo git dan mengkompilasi pada sistem seperti itu daripada harus mengambil sumber terbaru di tempat lain dan rsync.
sumber
Anda mungkin tertarik untuk membaca mengapa proyek desktop GNOME memilih git daripada hg dan bzr, ketika ia memutuskan untuk pindah dari svn beberapa tahun yang lalu. Ada banyak diskusi keagamaan yang hangat sepanjang jalan, tetapi halaman Wiki GNOME ini dengan baik merangkum pro dan kontra ketika mereka diterapkan pada komunitas tertentu.
sumber
Belum lagi Apple sekarang telah terlibat dengan mendorongnya ke komunitas c tujuan, jika Anda telah membuat aplikasi baru di Xcode 4 baru-baru ini, Anda akan memperhatikan bahwa itu secara otomatis bertanya apakah Anda ingin membuat repo Git.
Memang Xcode 4 baru ada selama beberapa bulan, dan tidak mempengaruhi kesuksesan Gits sebelumnya, tetapi kita semua tahu betapa populernya Apple dapat membuat banyak hal dalam waktu singkat.
sumber
Saat ini saya beralih dari hg (kiln) ke git (github). Saya telah menggunakan kiln selama sekitar satu tahun sekarang. Bagi saya hg tidak memiliki kerugian. Saya bisa melakukan semua yang harus saya lakukan. Sangat bagus.
Mengapa saya menggunakan sekarang?
Hanya ada tiga alasan saat ini.
Saya pikir yang ketiga adalah yang paling penting.
Thorsten
sumber
Keberuntungan murni kurasa, sampai sekarang hampir mustahil untuk membuktikan mengapa sesuatu berhasil dan yang lainnya tidak. Linus dapat membangun sesuatu yang spektakuler dan tidak berhasil.
sumber