Version Control adalah sebuah aplikasi yang mampu mengelola perubahan terhadap file. Dia mencatat perubahan apa saja yang terjadi, kapan terjadi, siapa yang
mengubah, dan apa isi perubahannya. Dengan menggunakan version control, file dapat dikerjakan secara bersamaan oleh lebih dari satu orang dengan aman. Ini
merupakan fitur yang esensial dalam kegiatan pembangunan aplikasi perangkat lunak atau pemrograman.
Ada dua jenis version control, terpusat (centralized) dan terdistribusi (distributed). Version control terpusat memiliki satu database (atau dikenal dengan istilah
repository) yang digunakan oleh banyak orang. Salah satu aplikasi version control terpusat yang terkenal adalah Subversion.
Version control terdistribusi memiliki satu repository untuk masing-masing pengguna. Repository ini berdiri sendiri, tapi bisa disinkronisasikan antar pengguna
dengan berbagai metode. Aplikasi version control terdistribusi yang terkenal antara lain adalah Git dan Mercurial.
Tentang Git
Git diciptakan oleh Linus Torvalds. Ya, Anda benar, Linus Torvalds yang itu. Si pembuat Linux.
Alkisah pada jaman dahulu kala, Linus tidak menggunakan version control sama sekali. Dia menerima kontribusi kode program dalam bentuk email. Email berisi
potongan kode (patch) ini lalu diintegrasikannya ke kode programnya sendiri. Begitu seterusnya sehingga sistem operasi Linux memiliki banyak fitur yang sebagian
besarnya adalah sumbangan orang lain.
Seiring dengan makin bertambahnya kontributor Linux, Linus pun merasa kewalahan dalam memproses email yang masuk. Ini mengakibatkan perkembangan sistem
operasi Linux menjadi lambat, dibatasi oleh kecepatan Linus membuka emailnya. Pada saat yang genting ini, datanglah Larry McVoy menawarkan dagangannya, yaitu
BitKeeper.
Rupanya BitKeeper ini sesuai dengan cara kerja Linus, sehingga diapun dengan gembira memakainya. Apalagi dengan diiming-imingi fasilitas gratis iuran tahunan,
tidak kalah dengan penawaran kartu kredit di mal. Dengan segera, BitKeeper menjadi version control resmi dalam kegiatan pengembangan Linux.
Walaupun demikian, kemesraan ini tidak berlangsung lama. Andrew Tridgell, salah satu kontributor Linux dan pembuat aplikasi Samba, mencoba mendownload isi
repository BitKeeper. Hal ini membuat Larry McVoy marah dan menghentikan fasilitas gratis iuran tahunan penggunaan BitKeeper. Bahkan beberapa kontributor,
khususnya yang berstatus karyawan OSDL, tidak diperbolehkan membeli lisensinya. Jangankan gratis, bayar saja tidak boleh.
Menghadapi kondisi ini, akhirnya Linus Torvalds memutuskan untuk membuat sendiri aplikasi version control. Hasilnya adalah Git.
Penggunaan version control adalah langkah pertama menuju software engineering yang baik dan benar. Sebuah tim yang membuat aplikasi perangkat lunak tidak
akan bisa bekerja sama dengan lancar tanpa version control. Sayangnya, referensi yang membahas version control dalam bahasa Indonesia masih sangat minim.
Dengan adanya buku ini, mudah-mudahan bisa meningkatkan efektifitas para programmer Indonesia sehingga bisa berdiri setara dengan koleganya di dunia
internasional.
Buku ini ditujukan bagi mereka yang ingin menggunakan version control. Pengguna terbesar version control biasanya adalah programmer. Walaupun demikian,
version control dapat digunakan untuk mengelola segala macam file, sehingga bisa juga digunakan oleh non-programmer.
Untuk bisa memahami buku ini tidak dibutuhkan pengetahuan khusus kecuali dasar penggunaan komputer biasa saja. Pembaca harus mahir membuat folder dan
mengedit file teks.
penggunaan harian
manajemen proyek dan tim
administrasi sistem
Bagian pertama berisi cara menggunakan Git. Dengan menguasai bagian pertama ini, kita sudah bisa bekerja secara produktif baik sendirian maupun dalam tim.
Bukan hanya teknik dasar, di bagian ini juga dibahas teknik tingkat tinggi seperti branch, merge, rebase, dan lainnya. Kita juga akan belajar cara penggunaan remote
repository di sini.
Jika Anda seorang team leader atau manajer, Anda perlu mendefinisikan prosedur kerja tim supaya anggota tim Anda bisa bekerja sama dengan efektif. Di bagian
kedua, kita akan melihat bagaimana Git digunakan untuk membuat kerja tim menjadi lebih efektif dan efisien. Dengan membahas beberapa studi kasus, kita akan
memahami bagaimana mendayagunakan Git secara maksimal.
Agar tim kita bisa menggunakan Git tentu kita harus menyediakan infrastrukturnya. Cara instalasi server, konfigurasi akses kontrol, backup dan restore, semua akan
dibahas di bagian ketiga. Di bagian ini juga dibahas beberapa perangkat pelengkap lain untuk meningkatkan efektifitas dan efisiensi kerja tim.
Sebagian besar isi bagian ketiga membahas tentang instalasi dan konfigurasi server. Oleh karena itu, pengetahuan mendalam tentang Linux dan jaringan sangat
dibutuhkan untuk menguasai bagian ketiga ini.
Format penulisan
Agar lebih enak dibaca, kita akan membedakan bentuk dan warna tulisan sebagai berikut. Perintah yang kita berikan pada komputer ditulis seperti ini.
git --version
Hasil yang ditampilkan komputer ditulis seperti ini.
Catatan khusus. Seringkali ada hal penting yang perlu mendapat perhatian khusus. Ini ditulis di menjorok ke tengah seperti contoh berikut.
Note
Working folder Git mengandung repository lengkap mulai dari revisi pertama sampai terbaru.
<html>
<head>
<title>Halo Dunia</title>
</head>
<body>
<h1>Halo Dunia</h1>
</body>
</html>
Lisensi
Buku ini memiliki lisensi Creative Commons Attribution Share Alike (CC-BY-SA). Artinya, semua orang:
bebas menggunakan buku ini tanpa harus membayar, baik untuk keperluan non-profit maupun komersil. Anda boleh membuka pelatihan berbayar
menggunakan buku ini.
bebas membagikan buku ini kepada siapa saja.
bebas membuat perubahan terhadap isi buku ini.
Semua kebebasan di atas hanya memiliki syarat yaitu tetap harus menyebutkan nama pengarang yang aslinya. Ini disebut dengan istilah attribution. Singkatnya, boleh
dipakai dan dibagikan asal jangan diakui sebagai karya sendiri. Selain itu, segala perubahan yang dibuat juga harus dilisensikan sama dengan buku ini. Ini disebut
dengan istilah Share-Alike. Lebih lanjut tentang lisensi ini bisa dilihat di website Creative Commons
Tools
Buku ini dibuat menggunakan perangkat pembantu :
Kontribusi
Semua orang boleh dan dianjurkan untuk ikut membantu penulisan buku ini. Bagaimana caranya? Gampang. Ada beberapa pekerjaan yang dapat dilakukan.
Reviewer
Tugasnya adalah memeriksa isi buku dan memberikan koreksi. Apa saja boleh dikoreksi, mulai dari tanda baca, salah ketik, contoh latihan tidak bisa dijalankan, apa
saja. Kalau ada penjelasan yang kurang jelas juga boleh dikomentari. Apapun yang bisa membuat buku ini lebih baik. Hasil review dapat dientri di halaman Issue di
Github.
Penulis
Bagus sekali kalau Anda ingin menyumbangkan tulisan. Lebih banyak yang mencerdaskan bangsa lebih baik. Begini caranya. Sebagai penulis buku Git, tentu Anda
sudah paham cara menggunakan Git, dan juga kemungkinan besar sudah punya account di Github. Langsung saja fork repository buku-git ini dan segeralah berkarya.
Begitu dirasa sudah memadai, kirimkan pull request ke saya. Nanti akan saya merge ke repository saya.
Instalasi Git
Instalasi Git di Windows
Installer Git di Windows dibuatkan oleh MSysGit, yang bisa diunduh di websitenya. Unduhlah file yang nama depannya Git, contohnya seperti ini: Git-1.7.3.1-
preview20101002.exe. Ambil saja versi yang terbaru. Setelah diunduh, kita bisa langsung jalankan. Berikut panduan screen demi screen.
Screen pertama adalah welcome. Welcome to Git Setup Wizard Langsung saja klik Next.
Di screen berikutnya, kita perlu mengganti opsinya karena berbeda dengan setting standar yang ditawarkan. Berikut posisi opsi yang seharusnya. Windows Explorer
Integration Path Setting Screen terakhir biarkan saja seperti yang disarankan. Ini gunanya untuk mengatasi perbedaan karakter ganti baris di Windows (CRLF) dan
Linux (LF saja) Line Endings
Setelah selesai, kita bisa test dengan membuka command prompt dan mengetik perintah
git
Kalau instalasi berjalan lancar, maka akan muncul output dari git sebagai berikut.
git-core
gitg
Setelah selesai, kita bisa test dengan membuka command prompt dan mengetik perintah git . Kalau instalasi berjalan lancar, maka akan muncul output dari git
sebagai berikut.
usage: git [--version] [--exec-path[=<path>]] [--html-path]
[-p|--paginate|--no-pager] [--no-replace-objects]
[--bare] [--git-dir=<path>] [--work-tree=<path>]
[-c name=value] [--help]
<command> [<args>]
Tortoise Git adalah antarmuka Git yang terintegrasi dengan Windows Explorer. Dengan menggunakan TortoiseGit, kita bisa menggunakan fitur Git dengan
menggunakan klik kanan di Windows Explorer.
Install TortoiseGit bisa didapatkan di websitenya. Ambil saja versi terbaru. Setelah itu, klik Next beberapa kali hingga selesai. Tidak ada opsi yang diubah, ikuti saja
setting yang dianjurkan.
Setelah selesai instalasi, kita bisa langsung menggunakan TortoiseGit. Sebaiknya Windowsnya direstart dulu, kalau tidak biasanya ada masalah dengan pewarnaan
icon.
Buka Windows Explorer, di sana ada menu tambahan yang disediakan oleh TortoiseGit, salah satunya adalah clone. Klik Kanan ada menu Clone Kalau kita klik clone,
kita akan dimintai alamat repository yang ingin kita clone. Informasi Clone Pada waktu pertama kali terkoneksi dengan server Git, biasanya kita akan ditanyai apakah
kita ingin menyimpan SSH key dari server tersebut. Save host key, pertama kali connect Setelah kita lanjutkan dan tidak ada masalah dengan jaringan ataupun
permission, clone akan selesai dengan baik. Clone selesai Dengan demikian, TortoiseGit telah terinstal dengan sukses. Untuk selanjutnya, operasi Git akan dijelaskan
melalui command line. Bila command line dipahami, menggunakan TortoiseGit juga tidak akan sulit.
Konfigurasi Awal
Konfigurasi utama yang harus kita lakukan adalah mendaftarkan nama dan email kita. Nama dan email ini akan digunakan untuk mencatat siapa yang membuat
perubahan di repository.
Konfigurasi username dan email dilakukan melalui perintah git config sebagai berikut:
Hasilnya bisa kita lihat menggunakan perintah git config --list . Berikut contohnya:
Selain username dan email, buat kita yang sering menggunakan commandline, perlu juga untuk mengaktifkan pewarnaan.
Konfigurasi user dan email di atas hanya berlaku di satu repository saja. Bila kita membuat repository lain, kita harus melakukan konfigurasi tersebut lagi. Bila kita
menggunakan komputer dengan username pribadi (bukan komputer umum seperti di warnet atau di lab komputer) kita tentu ingin sekali konfigurasi berlaku untuk
semua repository. Untuk itu, kita bisa menggunakan opsi --global seperti contoh berikut :
Bagi pengguna TortoiseGit, konfigurasi dilakukan menggunakan klik kanan. Settings Menu Setelah itu, pilih menu Config di tab kiri. Konfigurasi username dan email
Di sana juga disediakan tombol untuk memberlakukan konfigurasi secara local atau global.
Penggunaan Git Sehari-hari
Istilah dalam Git
Sepanjang buku ini, kita akan banyak menemui istilah-istilah baru. Jangan khawatir bila istilah yang dijelaskan di sini belum bisa dipahami. Seiring dengan
pemahaman yang semakin meningkat, istilah-istilah ini akan semakin masuk akal.
git init
Dengan demikian, kita telah membuat database untuk menyimpan revision di folder tersebut. Database ini dikenal dengan istilah repository.
Repository git berupa hidden folder bernama .git. Karena hidden, mungkin saja tidak terlihat, sehingga kita harus memodifikasi opsi di Windows Explorer, Nautilus,
atau aplikasi file manager yang kita gunakan agar menampilkan hidden file/folder.
Repository yang baru saja kita buat dapat digunakan untuk bekerja (memiliki working folder). Ada kalanya kita membuat repository untuk ditaruh di server dan tidak
diakses langsung. Repository ini disebut bare . Untuk membuatnya, jalankan git init dengan opsi --bare seperti ini.
Berbeda dengan repository dengan working folder, repository bare tidak memiliki hidden folder .git . Folder-folder yang digunakan git untuk menyimpan datanya
langsung digelar di folder repository bare tersebut.
Untuk mengunduh sebuah repo anda cukup melakukan : git clone (alamat repository,misal https://github.com/endymuhardin/buku-git.git)
Auto-Completion
Jika Anda menggunakan Bash shell, Git tersedia dengan sebuah script auto-completion yang dapat Anda hidupkan. Unduh source-code Git, dan cari direktori
contrib/completion ; di sana Anda akan menemukan berkas bernama git-completion.bash. Salin berkas ini ke direktori home Anda, dan tambahakn ini ke dalam
berkas .bashrc :
`source ~/.git-completion.bash`
Jika Anda ingin memasang Git agar secara otomatis menggunakan fitur ini bagi semua pengguna, salin script tadi ke direktori
/opt/local/etc/bash_completion.d di sistem Mac atau ke direktori /etc/bash_completion.d/ di sistem Linux. Ini adalah direktori tempat script yang akan
secara otomatis dibaca oleh Bash untuk menyediakan fitur auto-complete nya.
Jika Anda menggunakan Windows dengan Git Bash, yang sebetulnya adalah setting default ketika instalasi Git di Windows menggunakan msysGit, fitur ini
seharusnya sudah terkonfigurasi.
Pencet huruf Tab ketika Anda menuliskan perintah Git, dan Bash akan menampilkan beberapa kemungkinan yang Anda dapat pilih:
Dalam hal ini, mengetikkan git co dan memencet kunci Tab 2x akan menampilkan pilihan commit dan config. Dengan menambahkan m<tab> akan melengkapi git
commit secara otomatis.
Hal ini juga bekerja terhadap opsi, yang mungkin lebih berguna. Sebagai contoh, jika Anda menjalankan perintah git log dan tidak ingat salah satu dari opsi yang
tersedia, Anda dapat mulai mengetikkannya dan memencet Tab untuk melihat apa yang cocok:
Ini adalah trick yang cukup menarik dan dapat menghemat waktu Anda dan waktu membaca dokumentasi.
Kerja Tim dengan Git
Shared Repository Workflow
Kebijakan Branch