Sedikit konteks: Saya tahun ke-3 kuliah. siswa dibagi menjadi beberapa tim yang terdiri dari 4. Hampir semua orang akan bekerja di bawah windows (kecuali beberapa seperti saya yang ada di linux). Sebagai bagian dari kurikulum sekolah, kami akan segera mulai mengerjakan proyek untuk klien nyata, tetapi saya dan tim lain bertanya-tanya cara mana yang terbaik untuk berbagi kode kami satu sama lain.
Saya telah bekerja paruh waktu selama 3 tahun dan memiliki banyak pengalaman menggunakan git dan lincah pada proyek yang berbeda, jadi saya tidak punya masalah menggunakan satu sistem atau yang lain. Namun, tidak ada rekan tim saya yang pernah menggunakan sistem kontrol versi sebelumnya. Ada juga tim lain yang telah mencoba menggunakan SVN tetapi memiliki masalah besar dan lebih suka mencoba sesuatu yang lain, jadi mereka meminta pendapat saya.
Pikiran saya: Saya pernah mendengar bahwa Mercurial + TortoiseHg memiliki integrasi yang lebih baik di bawah windows, tetapi saya bertanya-tanya apakah konsep kepala anonim dapat membingungkan mereka bahkan jika saya menjelaskannya. Di sisi lain, saya menemukan bahwa git branch lebih mudah dipahami oleh pemula (pemisahan pekerjaan yang jelas untuk setiap programmer) tetapi tidak berfungsi dengan baik di bawah windows.
sumber
Jawaban:
Mercurial, tanpa keraguan.
Ini tentu saja, subyektif, dan vaires dari satu orang ke orang lain, tetapi pendapat umum adalah bahwa Mercurial lebih mudah untuk grok, terutama untuk seseorang yang baru mengenal VCS atau seseorang yang berasal dari salah satu VCS generasi lama.
Poin di tangan:
Mercurial dikembangkan dengan mempertimbangkan Windows ; Git diangkut. Tidak peduli apa yang orang coba katakan kepada saya, Git masih warga negara kelas dua di Windows. Banyak hal telah membaik selama beberapa tahun terakhir, tetapi Anda masih melihat banyak pertengkaran tentang mengapa sesuatu bekerja / atau tidak berfungsi pada Windows seperti pada * nix box. TortoiseHg bekerja dengan sangat baik, dan implementasi Visual Studio bahkan lebih mudah digunakan tanpa memutus alur kerja Anda.
Jika seseorang memulai diskusi "Git lebih kuat setelah Anda ...", maka dia cukup banyak mengatakan itu semua. Untuk 95% pengguna, Mercurial tampaknya lebih intuitif. Mulai dari kurangnya indeks, hingga opsi yang lebih intuitif (sakelar opsi koheren), ke nomor lokal untuk komit alih-alih hash SHA1 (siapa yang pernah berpikir hash SHA1 ramah pengguna ??!)
Cabang-cabang Mercurial tidak kalah kuat dari Git. Posting yang menggambarkan beberapa perbedaan. Kembali ke revisi sebelumnya semudah "perbarui revisi lama". Mulai dari sana; lakukan saja komit baru. Cabang yang dinamai juga tersedia jika seseorang ingin menggunakannya.
Sekarang, saya tahu bahwa semua ini adalah perincian, dan mereka dapat dipelajari dan segalanya, tetapi masalahnya adalah ... semua ini bertambah. Dan pada akhirnya, yang satu tampak lebih sederhana dan lebih intuitif dari yang lain. Dan sistem kontrol versi seharusnya tidak menjadi sesuatu yang orang habiskan untuk belajar - Anda ada di sana untuk belajar pemrograman dan kemudian memprogram; VCS adalah alat.
Hanya untuk diperhatikan; Saya menggunakan Git dan Mercurial setiap hari. Jangan kesulitan menggunakan salah satu dari mereka. Tetapi ketika seseorang meminta rekomendasi kepada saya, saya selalu merekomendasikan Mercurial. Masih ingat, ketika pertama kali masuk ke tangan saya, rasanya sangat intuitif. Dalam pengalaman saya, Mercurial hanya menghasilkan lebih sedikit WTF / menit dari Git.
sumber
Saya telah menemukan bahwa TortoiseHg UI adalah pengalaman hebat di Windows. Ketika bereksperimen dengan Git di masa lalu, saya malah pergi ke baris perintah. Untuk pengguna biasa, UI yang baik jauh lebih mudah didekati daripada baris perintah. Jadi, saya sarankan menggunakan Mercurial. (Ini termasuk grafik cabang yang bagus di jendela meja kerja juga. Ini harus menjernihkan setiap kesulitan percabangan dasar.)
Setelah mereka memahami hal-hal dari perspektif UI, mereka mungkin akhirnya pergi ke baris perintah ke skrip atau melakukan operasi manual - tetapi mereka tidak perlu.
sumber
Jika Anda tertarik pada opsi ketiga, saya sarankan fosil . Saya menemukan kemampuan untuk membuang server web temp untuk berbagi kode bekerja dengan baik dalam proyek-proyek kecil. Fosil hanyalah sebuah executable, sehingga Anda bisa memasukkannya dan sumber Anda ke dalam thumb drive, dan menggunakannya dari komputer universitas mana pun.
Gunakan
fossil ui
untuk memulai server web temp di mana pun Anda berada untuk menyinkronkan sesama siswa dengan Anda. Ini juga memberi Anda sistem tiket, wiki, dan antarmuka web yang mudah digunakan untuk mengubah cabang dan menandai komitmen.Pastikan mereka membaca panduan mulai cepat , dan / atau buku . Akhirnya, ada sebuah proyek bernama winFossil untuk memberi mereka antarmuka pengguna yang lebih ramah daripada web ui.
sumber
Mengingat bahwa tim-tim tersebut baru mengenal kontrol versi, dan banyak yang menggunakan Windows, saya akan merekomendasikan mercurial over git.
Model konseptual dari kontrol versi yang digunakan oleh git dan mercurial sangat mirip, jadi setelah Anda menguasainya, mudah untuk mengambil yang lain (dan untuk alasan yang sama, sangat mudah untuk mengubah repositori dari satu ke yang lain) . Ini berarti ini bukan masalah besar jika Anda berubah pikiran nanti.
Menurut pendapat saya, lincah lebih mudah bagi pengguna baru untuk belajar. Itu membuat hal-hal sederhana menjadi mudah, dan yang berbahaya menjadi sulit. Git membuat operasi berbahaya mudah (mudah dilakukan, tidak harus mudah dilakukan dengan benar!).
Antarmuka TortoiseHg untuk Winodows juga sangat bagus, dan merupakan argumen lain yang mendukung penggunaan mercurial.
sumber
Preferensi pribadi saya adalah untuk git.
Namun, karena beberapa orang akan menggunakan windows dan tutorial hginit yang luar biasa ada, saya sarankan mengajar mereka lincah.
sumber
Seperti yang disarankan banyak orang, Mercurial via TortoiseHg memiliki penghalang yang sangat rendah untuk masuk.
Bagi mereka yang menggunakan Windows, ini adalah satu penginstal dan bukan dua penginstal (dan banyak hal yang mungkin tidak ingin mereka pelajari) dan antarmuka pengguna THg jauh lebih halus daripada TortoiseGit + Msysgit .
Kepala anonim
Jika Anda berpikir mereka akan bingung dengan kepala anonim, maka jangan mendorong penggunaannya. Sebagian besar
hg
buku mengambil pendekatan yang seimbang dan mengajarkan cabang topologi dan bernama, dan biarkan pembaca menentukan mana yang paling tepat untuk mereka gunakan.Cabang yang diberi nama
Satu hal yang saya benar-benar rindu di
git
adalahhg
's cabang bernama , jadi itu salah satu pilihan.git
cabang baik-baik saja saat Anda mengerjakannya, tetapi begitu Anda telah menggabungkan pekerjaan itu ke cabang lain, Anda kehilangan banyak konteks untuk perubahan itu.Di dalamnya,
hg
Anda bisa membuat cabang bernamaJira#1234
dan selalu dapat menemukan semua revisi yang terkait dengan perbaikan itu . Digit
, setelah cabang Anda digabungkan dan ref dihapus, Anda harus menyimpulkan revisi mana yang merupakan bagian dari perbaikan dari topologi pohon revisi. Bahkan jika Anda tidak menghapus ref, Anda masih tahu komit terakhir pada cabang itu, bukan leluhur mana yang merupakan bagian dari rantai komit itu.Bookmark
Atau, jika Anda tidak ingin menggunakan cabang bernama, tetapi ingin
git
alur kerja gaya dengan cabang anonim Anda, maka Anda dapat menggunakan bookmark .Ini bisa menjadi yang terbaik dari kedua dunia - mereka bisa mempelajari
git
alur kerja, tetapi bisa menggunakanhg
perintah yang lebih sederhana .Indeks / Cache / Pementasan area
Secara pribadi, saya pikir siswa jauh lebih mungkin untuk bingung dengan
git
indeks / cache / area pementasan daripada olehhg
kepala anonim. Saya lebih sukahg
menjadikan fungsionalitas lanjutan ini opsional di baris perintah, alih-alihgit
mengasumsikan Anda selalu ingin / perlu menggunakannya.Saya juga berpikir bahwa area pementasan mendorong komit yang belum diuji atau bahkan disusun. Karena banyak dari tempat saya bekerja memiliki tidak komit jika tidak kompilasi aturan, saya lebih suka menunda / simpanan mengubah saya tidak ingin sekarang, unit test ulang-lari dan melakukan versi yang Saya tahu kompilasi.
Ketika nanti Anda melacak bug menggunakan hg bisect atau git bisect , Anda akan berterima kasih pada diri sendiri bahwa Anda dapat menguji semua revisi, bukan hanya yang mengkompilasi.
sumber
hg
cabang-cabang ini nama-nama selalu topologi lokal, jadi Anda hanya melihatnya jika Anda mencarinya.c
mengimplementasikan antarmuka yang dimodifikasi dalam filei
dan tanpa sengaja melakukani
tanpanyac
maka jika seseorang melakukan perubahan sebelum Anda sempat melakukanc
kompilasi mereka akan gagal. Jika Anda menggunakan alur kerja simpanan / kompilasi / komit sebagai gantinya, kesalahan ini tidak akan terjadi karena bangunan Anda sendiri akan rusak terlebih dahulu. Saya sudah mencoba membuat jawaban saya lebih jelas.