Saat mengajar kelas SCM kepada siswa yang baru mengenal Manajemen Konfigurasi Perangkat Lunak, terjadilah bahwa pertanyaan muncul seperti " What's the difference between checkin and checkout?
".
Dan variasi dari itu adalah bahwa siswa tersebut menjadi bingung tentang konsep SCM ini (mereka memahaminya sebagai sebaliknya).
Jadi, metafora macam apa yang dapat Anda gunakan untuk menjelaskan konsep SCM yang penting ini kepada audiens seperti itu?
terminology
scm
Pierre.Vriens
sumber
sumber
Jawaban:
Untuk menjelaskan sesuatu kepada siapa pun, cobalah membandingkannya dengan sesuatu yang mereka (mudah-mudahan) sudah akrab dengannya.
Jadi itu sebabnya saya jawab pertanyaan seperti itu:
Catatan : ini berlaku untuk sistem terpusat (seperti yang digunakan di lingkungan mainframe ...). Dalam sistem seperti git ,
checkout
konsep " " memiliki makna yang sama sekali berbeda (yang IMO juga mengapa dalam sistem itu hampir tidak ada kebingungan tentang kedua konsep).sumber
Penting untuk dicatat bahwa istilah "checkin" dan "checkout" memiliki arti yang berbeda tergantung pada jenis sistem SCM.
Sistem terpusat seperti TFVC, Subversion, dan Clearcase menggunakan checkout "eksklusif". Ini seperti metafora peminjaman buku Pierre, di mana hanya satu pengguna yang dapat memeriksa file sekaligus.
Sistem terdistribusi seperti git memiliki perintah "checkout", tetapi itu berarti sesuatu yang sangat berbeda.
git checkout
digunakan untuk berpindah antar cabang saat bekerja dengan repositori lokal.sumber
Untuk sistem terpusat, anggap saja seperti perpustakaan teknis. (mungkin hamparan imajinasi bagaimana fungsi perpustakaan hipotetis ini ...)
Jika Anda seorang penulis dokumen, Anda dapat
checkout
menyalin perpustakaan, membuat perubahan, mengembalikannyacheck it back in
ke perpustakaan untuk dilihat dunia.Ini bisa menjadi masalah jika perpustakaan memiliki salinan digital, dan saya
checkout
dokumen, orang lain jugachecks out
dokumen, kami berdua melakukan perubahan, akan ada konflik (menggabungkan konflik) yang mungkin sulit untuk diselesaikan. Ketika kemudian "perbaikan" awal untuk ini adalahcheckout
fungsi eksklusif ...Tentu saja untuk proyek-proyek besar kemungkinan masalah konflik penggabungan kritis berkurang (orang akan bekerja pada bagian sistem yang berbeda) sehingga
checkout
/checkin
tidak dibutuhkan sebanyak mungkin. Dan karena sistem terdistribusi dengan desain agak memerlukan fungsionalitas penggabungan yang baik, bersama dengan banyak manfaat lainnya, konsep itu tidak benar-benar ada di git dan DVCS lainnyasumber
Dengan repositori SCM sebagai subjek utama, maka '
sumber
Ada dua jenis sistem kontrol sumber tergantung pada apa yang merupakan unit percabangan terkecil.
1) Per cabang repositori (CVS, SVN, GIT, Perforce, ... dll)
Dalam produk-produk tempat Anda melakukan percabangan seluruh repositori, checkout biasanya akan membuat atau mengaktifkan modifikasi ke cabang lokal (salinan) dari seluruh repositori. Dalam produk tersebut checkin sering tidak digunakan dan menjadi bagian dari operasi komit , yang sekaligus checkout cabang terpencil, menerapkan patch lokal dan checkin cabang terpencil dalam operasi tunggal. Anda tidak checkin cabang lokal Anda karena diperiksa secara permanen. (Catatan: Di GIT Anda tidak komit ke cabang jarak jauh, Anda mendorong komit lokal Anda untuk itu. Perbedaan sintaksis yang ketat. )
2) Per objek bercabang (ClearCase, AccuRev, Oracle ADE)
Dalam produk tempat Anda bercabang objek individual, seperti direktori, file, dll. Konsep checkout dan checkin berlaku per objek per cabang. Anda akan mengunci objek untuk memodifikasinya dengan checkout dan melepaskannya dengan checkin . Dalam produk-produk tersebut Anda sering bekerja pada cabang pribadi di mana kunci tidak menghalangi siapa pun untuk bekerja dan pada saat penggabungan cabang lokal Anda menjadi cabang bersama, objek juga diperiksa di cabang beling (utama, master, cabang fitur, dll. ) konflik gabungan diselesaikan dan objek diperiksa di cabang bersama. Ini memungkinkan banyak orang untuk "melakukan" pada saat yang sama ke cabang bersama selama mereka tidak memodifikasi objek yang sama.
sumber