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