13:19:50 #startmeeting 13:19:50 Meeting started Sat Dec 18 13:19:50 2010 UTC. The chair is atoz-chevara. Information about MeetBot at http://wiki.debian.org/MeetBot. 13:19:50 Useful Commands: #action #agreed #help #info #idea #link #topic. 13:20:25 #topic How to use GIT part 2 13:20:50 MeetBot: pingall training dimulai 13:20:50 training dimulai 13:20:50 antisoda ashadebi atoz-chevara CIA-1 coneman fajran FloodServ MeetBot qalbi 13:20:50 training dimulai 13:21:17 ok 13:21:20 silahkan pak fajran :) 13:21:35 bismillahirrohmanirrohiim.. 13:21:40 kita mulai tutorial kali ini 13:21:52 topiknya adalah berkolaborasi dengan git 13:22:03 slide pendamping bisa dilihat di http://www.scribd.com/doc/45509577/Berkolaborasi-dengan-Git 13:22:46 selain untuk keperluan versioning, VCS juga bisa dipakai untuk membantu kolaborasi 13:22:48 #link http://www.scribd.com/doc/45509577/Berkolaborasi-dengan-Git : Berkolaborasi dengan Git 13:23:09 telat neh... 13:23:26 kolaborasi di sini maksudnya adalah lebih dari satu orang bekerja bersama2 dalam satu proyek yang sama 13:23:47 konkritnya, setiap orang yg terlibat bisa saling mempertukarkan perubahan yang dibuat 13:24:36 kali ini kita akan membahas cara melakukan kolaborasi dengan bantuan Git 13:25:31 dalam konteks ini, hal yang dipertukarkan adalah perubahan, alias commit, alias changeset, alias patch 13:26:26 untuk seterusnya saya akan menggunakan kata "patch" 13:26:48 di Git sendiri, pertukaran patch tidak memerlukan akses ke repositori Git yang ada 13:26:55 karena patch juga bisa dipertukarkan melalui email 13:27:14 namun tuk kali ini kita akan bertukar patch melalui repositori Git yang dapat diakses bersama 13:28:01 saya sendiri akan menggunakan Github, namun rekan2 dipersilakan juga menggunakan layanan repo publik lain seperti Gitorious atau git.or.cz 13:28:11 atau bahkan repo pribadi selama bisa diakses oleh orang lain 13:28:44 kalau di dunia VCS terpusat (seperti subversion) 13:29:15 seorang kontributor harus memiliki akses *tulis* ke repositori yang dipakai 13:30:28 kadang hal ini bisa jadi masalah karena tidak semua pemilik proyek mau siapa saja bisa seenaknya mengirim patch ke repo yg dipakai 13:31:01 namun di dunia VCS terdistribusi, berhubung repo nya sendiri terdistribusi alias siapa saja bisa memiliki repo pribadi 13:31:15 maka pengiriman patch dari kontributor ke pemilik proyek bisa dilakukan secara "pasif" 13:31:32 dalam artian si pemilik proyek akan *mengambil* patch dari repo si kontributor 13:31:48 dengan demikian, kontributor tidak perlu memiliki akses tulis ke repo si pemilik proyek 13:32:14 selain itu 13:33:24 penggunaan VCS terdistribusi juga memungkinkan adanya delegasi dalam urusan penyimpanan patch ke repo utama 13:33:38 contohnya dalam alur pengembangan kernel linux 13:33:47 kalau sedang melihat slide, coba buka halaman 4 13:34:32 kotak hijau bertuliskan developer di sana adalah para kontributor, alias penulis kode, alias pembuat patch 13:35:13 mereka akan mengirim patch ke orang yg bertanggung jawab untuk memelihara driver/file yg berubah (kotak kuning) 13:35:44 orang2 di kotak ini akan memeriksa patch yg dikirim dan jika layak, mereka akan mengirim ke pemelihara subsistem di atasnya (kotak biru) 13:36:01 dan terus begitu sampai akhirnya sampe ke si linus itu sendiri yg akhirnya akan melakukan rilis 13:36:35 oke.. sudah cukup ceritanya, sekarang mari kita praktek :D 13:37:00 kali ini ceritanya saya memiliki proyek resep nusantara 13:37:18 dan saya ingin mengajak rekan2 untuk berkontribusi resep masakan :D 13:37:39 proyek ini saya simpan dalam repo git yang bisa diakses juga melalui https://github.com/fajran/tutorial-git 13:38:04 nah 13:38:24 langkah pertama untuk berkontribusi ini adalah dengan menyalin repositori tsb menjadi repo lokal 13:38:56 github menyediakan 2 pintu gerbang untuk menyalin repo, yaitu melalui http dan juga melalui protokol git 13:39:07 saya sarankan agar untuk menggunakan yg kedua 13:39:21 cara untuk menyalin *repo lain* adalah dengan menggunakan git clone 13:39:24 $ git clone git://github.com/fajran/tutorial-git.git 13:39:41 nanti akan ada direktori bernama "tutorial-git" dan sebuah berkas "karedok.txt" di dalamnya 13:39:45 silakan dijalankan.. 13:40:28 sudah 13:40:31 ok 13:40:42 coba masuk ke direktori kerja tersebut 13:40:45 $ cd tutorial-git 13:40:54 ini adalah direktori kerja kita 13:41:05 di dalamnya juga ada *repo lokal* git pribadi kita 13:41:34 tanya: apa di sini semuanya menggunakan github? 13:41:45 iya pak 13:41:49 saya pakai 13:41:55 diganti pertanyaannya: ada yg tidak menggunakan github? 13:42:19 kalau memakai github, coba login dan buka https://github.com/fajran/tutorial-git 13:42:23 lalu klik tombol Fork 13:43:14 Fork di Github ini sama juga dengan git clone namun dilakukan di sisi Github 13:43:33 repo yg saya punya ini hanya bisa ditulisi oleh saya 13:43:40 namun jika repo ini di-fork 13:43:52 maka repo hasil fork-nya akan menjadi repo pribadi rekan2 masing2 13:43:59 sehingga bisa ditulisi oleh rekan2 sendiri 13:44:09 sudah semua? 13:44:17 sudah 13:44:20 ok 13:44:21 sudah 13:44:27 nah coba buka halaman repo hasil fork nya 13:44:46 di sana Github menuliskan lokasi repo yg bisa diakses melalui ssh 13:44:55 lokasi repo saya sendiri adalah git@github.com:fajran/tutorial-git.git 13:45:00 seharusnya cuma beda di usernamenya saja 13:45:03 sudah ketemu? 13:45:40 sudah. git@github.com:coneman/tutorial-git.git 13:45:47 ada pak, dibaris ssh dan http 13:45:56 antisoda: pakai yg ssh 13:46:06 kalau sudah, mari kita lanjut 13:46:18 sudah semua? 13:46:32 sudah pak git@github.com:antisoda/tutorial-git.git 13:47:13 ok 13:47:24 kalau kita punya sebuah direktori kerja git 13:47:37 di dalamnya ada repo lokal git 13:47:57 di dalamnya ada repo lokal git milik kita sendiri 13:48:08 dan selain itu kita bisa mendaftarkan repo lain untuk dipantau 13:48:16 atau diakses 13:48:30 perintah untuk melihat daftar repo lain yg sedang kita pantau adalah git remote 13:48:31 coba jalankan 13:48:32 $ git remote 13:48:48 karena tadi kita mengawali repo dengan melakukan clone repo lain 13:49:09 repo tadi otomatis akan didaftarkan dengan nama "origin" 13:49:21 untuk melihat informasi sebuah repo, tulis 13:49:31 $ git remote show [namarepo] 13:49:40 contohnya 13:49:43 $ git remote show origin 13:50:22 nanti akan keluar tulisan seperti di slide halaman 6 13:50:30 nah 13:50:51 ceritanya kita akan mengubah proyek resep ini dengan cara menambahkan resep masing2 13:50:58 kalau ada yg mau menambahkan berkas README juga silakan 13:51:14 perubahan yg kita buat ini akan kita kirim ke repo kita sendiri di Github 13:51:23 oleh karena itu, repo pribadi kita di Github perlu didaftarkan 13:51:39 caranya dengan perintah git remote add [nama-repo] [alamat-repo] 13:51:44 coba tuliskan 13:52:03 $ git remote add github git@github.com:username-di-github/tutorial-git.git 13:52:17 sesuaikan sendiri alamat reponya sesuai dengan yang diberikan oleh github tadi 13:52:35 setelah ini, kalau kita menjalankan "git remote" lagi 13:52:45 seharusnya akan ada 2 buah repo yg terdaftar, yaitu "origin" dan "github" 13:52:54 coba dijalankan.. 13:54:25 sudah semua? 13:54:34 sudaaaah... 13:54:35 * qalbi suda 13:54:44 oke 13:54:52 sekarang coba tambahakan sebuah resep baru 13:54:57 mudah2an ngga ada yg sama :D 13:55:19 tanya: $ git remote show punyasaya 13:55:20 Permission denied (publickey). 13:55:20 fatal: The remote end hung up unexpectedly 13:55:25 coba aja salin satu resep dari http://id.wikibooks.org/wiki/Kategori:Resep_dari_Indonesia 13:55:38 coneman: sudah upload ssh public key ke github? 13:56:05 fajran: hehe.. belum :D 13:56:25 coneman: coba upload dulu 13:56:59 resepnya ditulis di berkas baru 13:57:02 1 berkas 1 resep 13:57:06 nama berkas adalah nama resep 13:57:23 kalau sudah dibuat, simpan dan commit 13:57:28 $ git add resep-baru.txt 13:57:35 $ git commit -m "resep baru" 14:03:55 apa sudah semua? 14:05:33 sudah, 14:05:38 fajran: saya sudah 14:05:48 sudah dicommit ke repo lokal? 14:06:03 sudah 14:06:07 ok 14:06:15 patch terakhir ini masih ada di repo lokal 14:06:43 untuk mengirim ke repo lain (misalnya yg ada di github), kita perlu melakukan push 14:06:46 perintah dasarnya adalah 14:06:53 $ git push [nama-repo] [nama-cabang] 14:07:01 (untuk percabangan, kita akan bahas di lain waktu) 14:07:05 contohnya adalah 14:07:08 $ git push github master 14:07:26 coba dijalankan 14:07:35 seharusnya setelah ini perubahan terakhir bisa dilihat juga melalui github 14:07:57 saya sendiri baru saja menambahkan resep pangsit ke repo saya di github https://github.com/fajran/tutorial-git 14:08:09 mudah2an ngga ada nambahin resep sama :D 14:08:41 saya udah ngelihat qalbi dan coneman 14:08:43 ini gmn cr.a ?? 14:09:51 dari antisoda juga udah kelihatan 14:11:19 tanya: kan tadi repo yang dipantau ada 2 (origin dan punyasaya), apakan waktu nge push, di push ke kedua repo tsb? 14:11:57 coneman: ngga, cuma ke repo yg disebut 14:12:08 kalau pushnya ke "origin" maka akan dipush ke "origin" saja 14:12:13 ups 14:12:20 iya ya :D 14:12:30 * coneman ngantuk :D 14:13:09 ok. terima kasih 14:13:30 kalau ngeliat di https://github.com/fajran/tutorial-git/network 14:13:42 saya ngeliat coneman antisoda dan qalbi udah ngirim patch 14:14:01 nah sekarang saya akan menggabungkannya jadi satu 14:14:23 caranya.. 14:14:40 saya akan nambahin 3 repo yg ada itu ke direktori kerja saya dengan git remote 14:14:43 misalnya 14:15:00 $ git remote add qalbi git://github.com/qalbi/tutorial-git.git 14:15:17 lalu saya akan mengmabil perubahan dari repo qalbi dengan git pull 14:15:24 $ git pull [nama-repo] [nama-cabang] 14:15:25 contohnya 14:15:29 $ git pull qalbi master 14:15:57 setelah itu saya akan push lagi ke github saya 14:16:06 agar bisa dilihat juga oleh yang lain 14:17:08 ok sekarang sudah ada di github semua 14:17:09 coba cek https://github.com/fajran/tutorial-git 14:18:57 kalo liat hubungan antar repo, bisa dilihat saya udah menggabungkan perubahan dari repo lain 14:18:58 https://github.com/fajran/tutorial-git/network 14:19:20 nah.. berhubung repo saya juga terdaftar di direktori kerja rekan2 14:19:27 coba ambil perubahan terakhir dari saya 14:19:30 $ git pull origin master 14:19:43 nanti semua perubahan terakhir akan terlihat 14:19:45 cek juga log nya 14:19:46 $ git log 14:21:39 coneman: coba cek slide halaman 11 ttg push 14:22:08 sudah kah? 14:22:13 sudah lihat perubahan terakhir? 14:22:22 kalau mau, coba push ke github masing2 juga 14:23:16 gak istirahat? ketinggalan neh :( 14:23:58 fajran: sudah di push ke github pribadi 14:24:05 undurundur: sudah sampe mana? 14:24:53 fajran: masih belum bisa push 14:25:00 baru buat ssh key lagi 14:25:01 undurundur: coba buat key baru aja 14:25:04 iya sudah 14:39:22 masih lanjut ya? 14:41:37 okeh 14:41:48 undurundur: udah ngirim juga, sudah saya ambil, gabung, dan push balik ke repo saya 14:41:56 sekarang udah ada README nya juga :D 14:42:07 nahh 14:42:18 berhubung materi dari saya sendiri udah abis 14:42:27 sekarang kalo ada yg mau tanya silakan ditanyakan 14:43:03 ngomong2 14:43:26 ngerti semua kah dg proses yg baru saja kita lakukan ini? 14:43:37 * atoz-chevara tanya: untuk merge bagaimana pak? apakah nambahin 3 repo itu sama dgn merge? 14:44:15 atoz-chevara: merge itu pada dasarnya menggabungkan 2 buah repo menjadi 1 14:44:46 git remote itu cuma tuk mendaftarkan repo yang *dipantau* 14:44:52 bukan menggabungkan isinya 14:45:27 * atoz-chevara tanya: nah untuk menggabungkan itu bagaimana pak? apa sama seperti di cvs/svn? 14:46:01 ada bbrp cara 14:46:21 cara sapu jagadnya itu dengan git pull 14:46:29 git pull [namarepo] [namacabang] 14:46:43 itu akan mengambil seluruh perubahan di repo/cabang tersebut 14:46:52 lalu menggabungkannya dengan cabang yang *sedang aktif* 14:47:09 andaikan kita sedang ada di cabang master 14:47:19 maka git pull punya-orang cabang-keren 14:47:23 * atoz-chevara oke 14:47:34 akan menggabungkan cabang "cabang-keren" dari repo "punya-orang" ke cabang "master" di repo lokal kita 14:47:53 cara yang lebih bertahap itu dengan membagi git pull menjadi 2 tahap 14:47:58 yaitu git fetch dan git merge 14:49:14 andai kita mendaftarkan repo bernama "orang-lain" 14:49:21 perintah berikut ini 14:49:43 $ git fetch orang-lain 14:50:39 akan mengambil seluruh patch (changeset) yg ada di repo tsb 14:50:52 tapi *tidak* akan secara otomatis digabungkan ke cabang yang sedang aktif 14:51:13 untuk menggabungkannya kita perlu menjalankan git merge secara manual 14:51:22 git merge [nama-repo]/[nama-cabang] 14:52:03 untuk percabangan (termasuk merge dan rebase) rencananya akan saya bahas di tutorial berikutnya (ada kan? :D) 14:52:18 atoz-chevara: cukup kah? 14:52:55 * atoz-chevara sudah pak :) 14:53:04 sip 14:53:15 fajran: pak, tadi kan diawal fork. itu apa ya pak> 14:53:27 antisoda: fork yg disebut di awal itu merujuk ke istilah fork di github 14:53:46 di github itu kita bisa bikin repo yang merupakan salinan dari repo orang lain 14:53:51 istilahnya fork 14:54:16 mekanisme yg terjadi di belakang layar seharusnya sama saja dengan git clone 14:54:29 tapi kan kalau git clone dari github, nyampenya di kompi kita sendiri 14:54:40 trus kalau mau nyampe di github di repo pribadi kita, kita perlu ngepush lagi 14:54:49 nah biar ngga bolak balik, github ngasih fasilitas fork tadi itu 14:55:16 *sip! 14:55:30 ada pertanyaan lagi? 14:55:39 5 menit lagi saya mesti udahan 14:55:54 *sementara cukup pak 14:56:07 cukup pak 14:56:24 atoz-chevara: yg berikutnya kapan? minggu depan saya ngga bisa 14:56:41 fajran: bisanya kapan pak? 14:56:56 yaa selain minggu depan insya Allah bisa 14:57:57 atoz-chevara: berarti ada sesi ke-3 y pak? 14:58:33 atoz-chevara: kalo gak ngebahas percabangan kayanya belom komplit git nya :D 14:59:22 fajran: iya...benar pak, berarti untuk tanggal 23 nanti di isi dulu oleh pak udienz 15:00:24 kayanya saya masih bisa bantu bikin slide ttg percabangan 15:00:27 kalo mau ya pake aja 15:00:52 fajran: berarti sesi ke-3 di awal tahun pak 15:01:09 ok insya Allah bisa 15:01:40 tanggal 23 rencana'a pak udienz ingin mengisi tentang pemaketan 15:01:52 oh ok 15:02:13 karena ada revisi dari materi2 pemaketan yg telah di buat'a terdahulu 15:03:28 oke, baiklah...untuk sesi 2 di tutup dan akan di lanjutkan ke sesi 3 yang waktu'a akan di 15:03:47 ok 15:03:50 umumkan di forum, milis dan group debian-id di facebook 15:03:55 kalau begitu.. saya tutup tutorial kali ini 15:04:01 terima kasih atas peransertanya 15:04:14 alhamdulillahirobbil'aalamin 15:04:28 terima kasih banyak pak fajran 15:04:42 pak atoz-chevara juga, terima kasih banyak 15:04:56 fajran: sama-sama pak :) 15:06:57 tema pada minggu berikutnya mengenai pemaketan paket debian 15:07:00 semua: matur nuwun 15:07:01 yg akan di adakan pada hari kamis tanggal 23 masih dengan kanal yang sama 15:07:30 maka dari itu saya akan menutup training ini :) 15:07:55 terima kasih untuk semua'a yg telah hadir dan juga pemateri :) 15:08:04 #endmeeting