Di tempat kerja kami menggunakan SVN, tetapi hanya dalam nama. Kami tidak bercabang atau bergabung. Kami menyimpan dua salinan dari repositori, satu berfungsi sebagai cabang "tag" yang disalin ketika kami melakukan penempatan dan disimpan untuk perbaikan bug dan langsung "jenis ini harus ditayangkan langsung" fitur. Kita harus ingat untuk menyalin perubahan yang dibuat dalam satu salinan ke salinan lainnya ("trunk"). Kami memiliki selusin proyek di dalam satu folder di repositori, alih-alih membaginya. Singkatnya satu-satunya hal yang kami gunakan untuk SVN adalah kemampuan untuk melakukan. Yang lainnya dilakukan secara manual.
Saya telah mengevaluasi Mercurial; Saya telah menggunakan Git di masa lalu (saya satu-satunya di tim yang telah menggunakan DVCS), dan saya mengambil Mercurial dengan cepat. Saya berdebat memperkenalkan Mercurial ke seluruh tim sebagai "cara yang lebih baik" dalam melakukan sesuatu karena percabangan itu mudah, penggabungan jauh lebih mudah, dan kami dapat melakukan hal-hal secara lokal sesuai dengan isi hati kami dan hanya mendorong mereka ke pusat bercabang saat mereka siap. Kami akan mendapatkan semua manfaat dari SVN (dan kami juga tidak mendapatkan banyak manfaat saat ini karena tidak ada yang benar-benar memahami SVN) plus untuk fitur-fitur baru kami tidak harus memiliki banyak file yang tidak berversi yang mengambang sehingga kami harus mengembalikan kita dalam masalah. Alur kerjanya tampak sedikit lebih sederhana - kita hanya harus ingat bahwa "Komit" adalah lokal dan "Dorong" seperti komit SVN,
Apakah ini pendekatan yang baik untuk dilakukan? Perlu diingat bahwa tim ini sangat fleksibel dan akan sejalan dengan apa pun yang akan meningkatkan kualitas kerja kami dan membuat kami melakukan hal-hal lebih mudah - CIO bahkan bertanya kepada saya ketika saya menyebutkan bagaimana kami tidak menggunakan SVN untuk potensinya "Apakah ada sesuatu yang lebih baik yang bisa kita gunakan? " jadi dia juga ikut.
sumber
I will probably not take DVCS very seriously until I end up on a large development team
Atau hingga Anda berakhir di tim terdistribusi. Kami adalah tim kecil (5 orang) yang bekerja dari 3 lokasi (dan kadang-kadang 5, ketika kami merasa tidak ingin turun dari tempat tidur), dan pergantian dari svn ke hg adalah yang menyenangkan ...Jawaban:
Iya.
Jika Anda mengganti "SVN" dengan "Perforce" di OP Anda, Anda sudah cukup banyak menghadapi situasi ketika saya memulai pekerjaan saya saat ini, bahkan sampai ke penyalinan perubahan manual. Dua tahun kami di Mercurial dan semua orang setuju itu adalah perubahan besar.
Kami memiliki kemampuan untuk bercabang dan menggabungkan per kasus dukungan , yang sangat berguna untuk QA, dan kemampuan untuk membuat sejumlah cabang dan repositori yang dapat dibuang kapan pun kami mau, yang kemudian dapat kami bangun dan verifikasi di server CI kami, kemudian gunakan ke lingkungan cloud test dan verifikasi fungsionalitas. Ini telah sangat bermanfaat dalam hal ketenangan pikiran bahwa ketika kami melakukan penyebaran langsung, kami hampir 100% yakin itu akan berhasil (tanpa masalah lingkungan / DB, yang jelas di luar ruang lingkup VCS).
Pada dasarnya, apa yang kami peroleh dari beralih ke mercurial adalah menghirup ruang. Kita tidak perlu lagi khawatir tentang biaya cabang, atau sesi penggabungan mengerikan yang mau tidak mau harus diikuti, semuanya jauh lebih mudah. Kami juga menggunakan FogBugz cukup banyak sehingga ikatan ke Kiln (lincah host mereka) sangat membantu.
Komentar tentang situs hginit juga tepat, sebagai garis besar untuk alur kerja kontrol versi yang benar-benar berfungsi (dengan asumsi Anda menyesuaikannya untuk alur kerja QA khusus perusahaan Anda).
Satu-satunya kelemahan yang mungkin terjadi dalam kontrol versi pemindahan adalah bahwa Anda akan membutuhkan seseorang yang benar-benar merupakan kekuatan pendorong di balik perubahan, yang senang membaca materi pelajaran dan benar-benar menggunakan perkakas dengan potensi terbaiknya, yang tampaknya ingin Anda lakukan. melakukan.
Saya tidak setuju dengan komentar tentang ukuran tim dan distribusi tim yang berkaitan dengan apakah akan menggunakan DCVS juga. Sungguh, ini tentang distribusi KODE. Jika Anda memiliki beberapa siklus pengembangan yang terjadi secara paralel, baik mendukung kasing pada sistem lama, atau banyak fitur atau bahkan sistem baru (yang menurut Anda lakukan), Anda akan mendapat manfaat dari menggunakan DVCS.
sumber
Alat yang berbeda mungkin tidak akan menyelesaikan masalah Anda, saya katakan Anda harus membaca artikel ini, saya merasa paling bermanfaat:
http://thedailywtf.com/Articles/Source-Control-Done-Right.aspx
Saya pikir poin utama dari artikel ini dirangkum di sini, tapi tolong baca:
sumber
Tidak. Teknologi jarang sekali memecahkan masalah seperti ini.
Mercurial lebih kompleks daripada Subversion (ya, percabangan dan penggabungan lebih baik, dan mungkin lebih mudah, tetapi model Subversion jauh lebih sederhana daripada Mercurial). Jika Anda menggunakan Subversion dengan cara braindead sedemikian rupa, Anda mungkin akhirnya menggunakan Mercurial:
c) dan d) terdengar seperti hasil yang paling mungkin. Tuliskan mengapa Anda berpikir Anda akan berakhir pada a) atau b).
sumber
Saya tidak dapat berbicara tentang bagaimana tim besar bekerja, tetapi untuk tim kecil banyak masalah SVN besar itu sebenarnya bukan masalah SVN ... Itu masalah pengembangan. Jika Anda tidak mengikuti standar pengembangan modern (yang paling penting, melakukan integrasi terus-menerus), maka mengubah versi menjadi kekacauan persis yang Anda gambarkan ... Sebelum melompat ke sistem baru, pastikan untuk melakukan analisis akar masalah yang sebenarnya pada masalah Anda ...
sumber
Tidak. Alat bukan pengganti metodologi.
Jika Anda tidak menggunakan Subversion sebagai SCM , Anda juga tidak bisa menggunakan Mercurial (dan itu kemungkinan besar akan terjadi)
sumber
SVN dapat melakukan apa yang perlu Anda lakukan dan tidak perlu mengubah kuda mid-stream untuk pembayaran yang meragukan.
Apa pun yang Anda lakukan, Anda harus mengatasi masalah kepercayaan. Seseorang harus dapat meyakinkan semua orang untuk mengubah alur kerja mereka. Ini tidak mudah bahkan dalam keadaan terbaik, bahkan jika Anda memiliki logika dan fakta di pihak Anda. Ini adalah salah satu hal tersulit untuk dilakukan dalam suatu organisasi. Jika Anda merusaknya atau menjadi kasar, Anda kehilangan kepercayaan dan akan sangat sulit untuk mendapatkan kembali kepercayaan itu.
Ada beberapa hal yang saya tahu orang telah mencoba dengan sukses. Mungkin salah satu dari mereka akan bekerja untuk tim Anda:
Membawa "pelatih" untuk menyediakan serangkaian lokakarya untuk tim. Ini kemungkinan akan menjadi orang eksternal (ironisnya, seringkali lebih mudah bagi banyak tim untuk memercayai orang luar daripada memercayai seseorang dalam tim). Itu haruslah seseorang yang mengetahui barang-barangnya dari dalam ke luar dan yang secara efektif dapat mengajarkan keterampilan ini kepada orang-orang di semua tingkatan pemahaman dan menyusun rencana pragmatis untuk meluncurkan VCS baru (*) ke alur kerja tim.
Mulai proyek "skunk-works" untuk menguji-drive dan memvalidasi VCS baru pada proyek sampingan kecil. Pilih beberapa pengembang "alfa" yang bersedia mencoba hal-hal baru dan tidak keberatan memeras banyak percobaan yang tidak berhasil. Ketika skunk-work dapat menunjukkan peningkatan alur kerja yang tak terbantahkan oleh CONCRETE, maka Anda dapat mencoba untuk meluncurkannya ke anggota tim lainnya dan Anda memiliki beberapa penginjil untuk membantu Anda melakukannya.
(*) oleh "VCS baru" Saya tidak harus berarti lincah atau git, itu juga bisa SVN (dilakukan dengan benar).
sumber