Browsed by
Tag: software development

Git vs SVN

Git vs SVN

branch

Sudahkah Anda memakai Version Control Software (VCS)? Penggunaan VCS tidak dibatasi oleh aktivitas yang melibatkan teks saja. Keperluan untuk menyimpan sejarah dokumen, apapun bentuknya, telah menjadi kebutuhan banyak orang. Perusahaan konstruksi pun perlu menggunakan VCS.

Historical value

VCS memberikan kemampuan untuk melihat masa lalu. Dokumen yang ada hari ini bisa kita lacak kembali ke masa awal pembuatannya. Misalnya Anda adalah pegawai baru, dengan VCS Anda akan tahu bagaimana dokumen kesepakatan dievaluasi secara periodikal. Tidak perlu lagi mengandalkan orang untuk mengingat-ingat atau menyimpan bertumpuk-tumpuk kertas atau dokumen digital yang mewakili setiap versi.

Collaboration and Conflict Resolution

VCS juga menjadi alat bantu kolaborasi yang cukup mumpuni. Salah satu masalah besar dalam kolaborasi adalah concurrent access. Setiap orang bisa memodifikasi dokumen sesuai kepentingannya di bagian manapun. Jika proses kolaborasi ini difasilitasi dengan banyak dokumen maka akan muncul masalah siapa yang akan menggabungkan semua pengubahan yang telah dilakukan. Jika difasilitasi dengan satu dokumen yang dibagi bersama (bukan Google Doc) maka akan ada resiko saling menimpa pengubahan yang dilakukan orang lain.

Sentralisasi dan Desentralisasi

Sebenarnya bukan masalah antara Git vs SVN tapi lebih ke sentralisasi dan desentralisasi. VCS yang tersentral berarti tidak ada yang memiliki histori lengkap dari suatu dokumen kecuali server VCS. Sebaliknya, VCS yang terdesentralisasi memungkinkan semua orang memiliki histori lengkap dari sebuah dokumen.

Untuk keperluan pengembangan perangkat lunak, pola terdesentralisasi lebih punya banyak manfaat. Karena setiap orang bisa memiliki histori dokumen sendiri maka perubahan yang dilakukan oleh seorang pengguna tidak perlu dipush ke server. Sebaliknya dalam konsep tersentralisasi, setiap perubahan versi mau tidak mau harus dipush ke server.

Konsep desentralisasi memungkinan seorang pengembang melakukan perbaikan bug pada suatu cabang yang berlainan dengan pekerjaan menambah fitur baru (dalam kaitan dengan proyek/dokumen yang sama).

Ekosistem opensource yang sangat permisif terhadap forking (baca: jika tidak puas, Anda bisa membuat versi perngkat lunak Anda sendiri) sangat cocok dengan konsep desentralisasi. semua orang bisa bereksperimen dengan banyak hal baru tanpa harus mengganggu garis pengembangan utama. Proses penggabungan hasil eksperimen juga tidak susah.

So, Anda sudah pakai SCM? Apa yang Anda pakai dan sebutkan alasannya? Kenapa belum memakai?