-->

Konsep Git Version Control System


Konsep Git Version Control System


Version Control System

Version Control System (VCS) adalah perangkat lunak yang membantu pengembang perangkat lunak untuk bekerja bersama dan mempertahankan riwayat lengkap pekerjaan mereka.

Di bawah ini adalah fungsi dari VCS -
  • Mengizinkan pengembang bekerja secara bersamaan.
  • Tidak memungkinkan saling menimpa perubahan.
  • Mempertahankan riwayat setiap versi.
Berikut ini adalah jenis VCS -
  • Sistem kontrol versi terpusat (CVCS).
  • Sistem kontrol versi terdistribusi / terdesentralisasi (DVCS).
  • Dalam bab ini, kita akan berkonsentrasi hanya pada sistem kontrol versi terdistribusi dan terutama pada Git. Git berada di bawah sistem kontrol versi terdistribusi.

Sistem Kontrol Versi Terdistribusi

Sistem kontrol versi terpusat (CVCS) menggunakan server pusat untuk menyimpan semua file dan memungkinkan kolaborasi tim. Tetapi kelemahan utama CVCS adalah satu-satunya titik kegagalan, yaitu, kegagalan server pusat. Sayangnya, jika server pusat turun selama satu jam, maka selama jam itu, tidak ada yang bisa berkolaborasi sama sekali. Dan bahkan dalam kasus terburuk, jika disk server pusat rusak dan cadangan yang tepat belum diambil, maka Anda akan kehilangan seluruh sejarah proyek. Di sini, sistem kontrol versi terdistribusi (DVCS) ditampilkan.

Klien DVCS tidak hanya memeriksa snapshot terbaru dari direktori tetapi mereka juga sepenuhnya mencerminkan repositori. Jika server turun, maka repositori dari klien apa pun dapat disalin kembali ke server untuk memulihkannya. Setiap checkout adalah cadangan penuh dari repositori. Git tidak bergantung pada server pusat dan itulah sebabnya Anda dapat melakukan banyak operasi saat offline. Anda dapat melakukan perubahan, membuat cabang, melihat log, dan melakukan operasi lain saat Anda offline. Anda hanya memerlukan koneksi jaringan untuk mempublikasikan perubahan Anda dan mengambil perubahan terbaru.

Keuntungan dari Git

Sumber gratis dan terbuka

Git dirilis di bawah lisensi open source GPL. Ini tersedia secara bebas melalui internet. Anda dapat menggunakan Git untuk mengelola proyek properti tanpa membayar sepeser pun. Karena ini merupakan sumber terbuka, Anda dapat mengunduh kode sumbernya dan juga melakukan perubahan sesuai dengan kebutuhan Anda.

Cepat dan kecil

Karena sebagian besar operasi dilakukan secara lokal, ini memberikan manfaat besar dalam hal kecepatan. Git tidak bergantung pada server pusat; itu sebabnya, tidak perlu berinteraksi dengan server jarak jauh untuk setiap operasi. Bagian inti dari Git ditulis dalam C, yang menghindari overhead runtime yang terkait dengan bahasa tingkat tinggi lainnya. Meskipun Git mencerminkan seluruh repositori, ukuran data di sisi klien kecil. Ini menggambarkan efisiensi Git dalam mengompresi dan menyimpan data di sisi klien.

Cadangan tersirat

Peluang kehilangan data sangat jarang terjadi ketika ada banyak salinannya. Data yang ada di sisi klien mencerminkan repositori, karenanya dapat digunakan jika terjadi kerusakan atau kerusakan disk.

Keamanan

Git menggunakan fungsi hash kriptografi yang umum disebut fungsi hash aman (SHA1), untuk memberi nama dan mengidentifikasi objek dalam basis datanya. Setiap file dan komit dijumlahkan dan diambil oleh checksum-nya pada saat checkout. Ini menyiratkan bahwa, tidak mungkin untuk mengubah file, tanggal, dan melakukan pesan dan data lainnya dari database Git tanpa mengetahui Git.

Tidak perlu perangkat keras yang kuat

Dalam kasus CVCS, server pusat harus cukup kuat untuk melayani permintaan seluruh tim. Untuk tim yang lebih kecil, ini bukan masalah, tetapi seiring dengan bertambahnya ukuran tim, keterbatasan perangkat keras server dapat menjadi hambatan kinerja. Dalam hal DVCS, pengembang tidak berinteraksi dengan server kecuali mereka perlu mendorong atau menarik perubahan. Semua pengangkatan berat terjadi di sisi klien, sehingga perangkat keras server memang bisa sangat sederhana.

Percabangan lebih mudah

CVCS menggunakan mekanisme copy murah, Jika kita membuat cabang baru, itu akan menyalin semua kode ke cabang baru, sehingga memakan waktu dan tidak efisien. Selain itu, penghapusan dan penggabungan cabang di CVCS rumit dan memakan waktu. Tetapi manajemen cabang dengan Git sangat sederhana. Hanya perlu beberapa detik untuk membuat, menghapus, dan menggabungkan cabang.

Terminologi DVCS

Repositori Lokal

Setiap alat VCS menyediakan tempat kerja pribadi sebagai copy pekerjaan. Pengembang membuat perubahan di tempat kerja pribadi mereka dan setelah melakukan, perubahan ini menjadi bagian dari repositori. Git mengambil satu langkah lebih jauh dengan memberi mereka salinan pribadi dari seluruh repositori. Pengguna dapat melakukan banyak operasi dengan repositori ini seperti menambah file, menghapus file, mengganti nama file, memindahkan file, melakukan perubahan, dan banyak lagi.

Direktori Kerja dan Staging Area atau Indeks

Direktori yang berfungsi adalah tempat di mana file diperiksa. Di CVCS lain, pengembang umumnya melakukan modifikasi dan melakukan perubahan langsung ke repositori. Tetapi Git menggunakan strategi yang berbeda. Git tidak melacak setiap dan setiap file yang dimodifikasi. Setiap kali Anda melakukan operasi, Git mencari file yang ada di area pementasan. Hanya file-file yang ada di area pementasan yang dianggap untuk komit dan tidak semua file yang dimodifikasi.

Mari kita lihat alur kerja dasar Git.

Langkah 1 - Anda memodifikasi file dari direktori kerja.
Langkah 2 - Anda menambahkan file-file ini ke area pementasan.
Langkah 3 - Anda melakukan operasi komit yang memindahkan file dari area pementasan. Setelah operasi dorong, ini menyimpan perubahan secara permanen ke repositori Git.

Misalkan Anda memodifikasi dua file, yaitu "sort.c" dan "search.c" dan Anda ingin dua komit berbeda untuk setiap operasi. Anda dapat menambahkan satu file di area pementasan dan melakukan komit. Setelah komit pertama, ulangi prosedur yang sama untuk file lain.

# First commit
[bash]$ git add sort.c

# adds file to the staging area
[bash]$ git commit –m “Added sort operation”

# Second commit
[bash]$ git add search.c

# adds file to the staging area
[bash]$ git commit –m “Added search operation”

Blobs

Blob adalah singkatan dari Binary Large Object. Setiap versi file diwakili oleh gumpalan. Gumpalan menyimpan data file tetapi tidak berisi metadata apa pun tentang file tersebut. Ini adalah file biner, dan dalam database Git, ia dinamai sebagai hash SHA1 dari file itu. Di Git, file tidak dialamatkan dengan nama. Semuanya ditujukan konten.

Tree

Tree adalah objek, yang mewakili direktori. Ini memegang gumpalan serta sub-direktori lainnya. Pohon adalah file biner yang menyimpan referensi ke gumpalan dan pohon yang juga disebut sebagai hash SHA1 dari objek pohon.

Commit

Commit memiliki status repositori saat ini. Komit juga dinamai dengan hash SHA1. Anda dapat mempertimbangkan objek komit sebagai simpul dari daftar tertaut. Setiap objek commit memiliki pointer ke objek commit induk. Dari komit yang diberikan, Anda dapat melintasi kembali dengan melihat pointer induk untuk melihat riwayat komit. Jika komit memiliki beberapa komit induk, maka komit tersebut telah dibuat dengan menggabungkan dua cabang.

Branches

Branches atau Cabang digunakan untuk membuat jalur pengembangan lain. Secara default, Git memiliki cabang master, yang sama dengan trunk di Subversion. Biasanya, cabang dibuat untuk bekerja pada fitur baru. Setelah fitur selesai, itu digabung kembali dengan cabang master dan kami menghapus cabang. Setiap cabang direferensikan oleh HEAD, yang menunjuk ke komit terbaru di cabang. Setiap kali Anda membuat komit, KEPALA diperbarui dengan komit terbaru.

Tag

Tag memberikan nama yang bermakna dengan versi spesifik di repositori. Tag sangat mirip dengan cabang, tetapi perbedaannya adalah bahwa tag tidak dapat diubah. Artinya, tag adalah cabang, yang tidak ingin diubah oleh siapa pun. Setelah tag dibuat untuk komit tertentu, bahkan jika Anda membuat komit baru, itu tidak akan diperbarui. Biasanya, pengembang membuat tag untuk rilis produk.

Clone

Operasi Clone menciptakan instance repositori. Operasi klon tidak hanya memeriksa copy pekerjaan, tetapi juga mencerminkan repositori lengkap. Pengguna dapat melakukan banyak operasi dengan repositori lokal ini. Satu-satunya waktu jaringan terlibat adalah ketika instance repositori sedang disinkronkan.

Pull

Operasi Pull menyalin perubahan dari instance repositori jauh ke yang lokal. Operasi tarikan digunakan untuk sinkronisasi antara dua instance repositori. Ini sama dengan operasi pembaruan di Subversion.

Push

Push copy operasi perubahan dari instance repositori lokal ke yang jauh. Ini digunakan untuk menyimpan perubahan secara permanen ke dalam repositori Git. Ini sama dengan operasi komit di Subversion.

Head

Head adalah pointer, yang selalu menunjuk ke komit terbaru di cabang. Setiap kali Anda membuat komit, Head diperbarui dengan komit terbaru. Kepala cabang disimpan di direktori .git / refs / heads /.

[CentOS]$ ls -1 .git/refs/heads/
master

[CentOS]$ cat .git/refs/heads/master
570837e7d58fa4bccd86cb575d884502188b0c49

Revision

Revision mewakili versi kode sumber. Revisi di Git diwakili oleh komit. Komit ini diidentifikasi oleh hash aman SHA1.

URL

URL mewakili lokasi repositori Git. URL Git disimpan dalam file konfigurasi.

[tom@CentOS tom_repo]$ pwd
/home/tom/tom_repo

[tom@CentOS tom_repo]$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = gituser@git.server.com:project.git
fetch = +refs/heads/*:refs/remotes/origin/*

Anda mungkin menyukai postingan ini

Posting Komentar