Memahami kontrol sumber terdistribusi

Selesai

Strengths are cross platform, open source, offline support, and history. Best used for small codebases, evolving open course, distributed teams, and Greenfield projects.

Seiring waktu, apa yang disebut kontrol sumber "terdistribusi" atau sistem kontrol versi (disingkat DVCS) telah menjadi yang paling penting.

Tiga yang paling populer adalah Git, Mercurial, dan Bazaar. Sistem ini tidak selalu mengandalkan server pusat untuk menyimpan semua versi file proyek. Sebaliknya, setiap pengembang "mengkloning" salinan repositori dan memiliki riwayat lengkap proyek pada penyimpanan lokal mereka. Salinan ini (atau "kloning") memiliki semua metadata asli.

Metode ini mungkin terdengar boros tetapi tidak menjadi masalah dalam praktiknya. Sebagian besar proyek pemrograman terutama terdiri dari file teks biasa (mungkin beberapa gambar).

Ruang disk sangat murah sehingga menyimpan banyak salinan file tidak membuat penyok yang terlihat di ruang kosong penyimpanan lokal. Sistem modern juga mengompres file untuk menggunakan ruang yang lebih sedikit; misalnya, objek (dan delta) disimpan dikompresi, dan file teks yang digunakan dalam kompres pemrograman dengan baik (sekitar 60% dari ukuran asli, atau pengurangan ukuran 40% dari kompresi).

Mendapatkan perubahan baru dari repositori disebut "menarik." Memindahkan perubahan Anda ke repositori disebut "mendorong." Anda memindahkan set perubahan (perubahan pada grup file sebagai keseluruhan koheren), bukan diff file tunggal.

Salah satu kesalahpahaman umum tentang sistem kontrol versi terdistribusi adalah bahwa tidak mungkin ada repositori proyek pusat. Itu tidak benar. Tidak ada yang menghentikan Anda dari mengatakan, "salinan proyek ini adalah yang otoritatif."

Ini berarti bahwa alih-alih repositori pusat yang diperlukan oleh alat Anda, sekarang bersifat opsional.

Keuntungan dibandingkan kontrol sumber terpusat

Tindakan mengkloning seluruh repositori memberi alat kontrol sumber terdistribusi beberapa keuntungan dibandingkan sistem terpusat:

  • Melakukan tindakan selain mendorong dan menarik changeset cepat karena alat hanya perlu mengakses penyimpanan lokal, bukan server jarak jauh.
  • Menerapkan kumpulan perubahan baru dapat dilakukan secara lokal tanpa orang lain melihatnya. Setelah memiliki grup kumpulan perubahan yang siap, Anda dapat mendorong semuanya sekaligus.
  • Semuanya kecuali mendorong dan menarik dapat dilakukan tanpa koneksi internet. Jadi, Anda dapat bekerja di pesawat, dan Anda tidak akan dipaksa untuk melakukan beberapa perbaikan bug sebagai satu set perubahan besar.
  • Karena setiap programmer memiliki salinan lengkap repositori proyek, mereka dapat berbagi perubahan dengan satu atau dua orang lain untuk mendapatkan umpan balik sebelum menampilkan perubahan pada semua orang.

Kekurangan dibandingkan dengan kontrol sumber terpusat

Hampir tidak ada kekurangan dalam menggunakan sistem kontrol sumber terdistribusi daripada yang terpusat.

Sistem terdistribusi tidak mencegah Anda memiliki satu repositori "pusat"; mereka menyediakan lebih banyak opsi.

Hanya ada dua kelemahan utama yang melekat pada penggunaan sistem terdistribusi:

  • Jika proyek Anda berisi banyak file biner besar yang tidak dapat dikompresi secara efisien, ruang yang diperlukan untuk menyimpan semua versi file ini dapat terakumulasi dengan cepat.
  • Jika proyek Anda memiliki riwayat yang panjang (50.000 kumpulan perubahan atau lebih), mengunduh seluruh riwayat dapat memakan waktu dan ruang disk yang tidak praktis.