Tuesday, December 15, 2015

web bitbucket merge pull request

saya mau berbagi sedikit pengalaman kurang enak terkait merging pull request melalui web bitbucket.

saya menggunakan web bitbucket dalam mengolah pull request di dalam tim. untuk merge, saya menggunakan button 'merge' yang ada di halaman pull request. kasusnya, saya memiliki sebuah pull request yang targetnya untuk di-merge ke salah satu branch. branch yang menjadi target merge saya ini juga menjadi target merge dari pull request branch lain. kebetulan saat itu branch lain itu lah yang di-merge terlebih dahulu. selang beberapa detik kemudian saya melakukan merge.

web bitbucket memiliki sistem notifikasi jika target merge kita mengalami perubahan dan menimbulkan conflict dengan pull request kita, tetapi notifikasi itu tentunya membutuhkan waktu untuk sampai di halaman saya.

karena proses merge dari branch lain tadi hanya selisih beberapa detik dengan ketika saya meng-klik merge branch saya, notifikasi belum sampai sehingga saya belum mengetahui adanya conflict. dan untuk efisiensi, ketika saya merge, saya men-centang 'Close source branch' agar branch saya langsung terhapus.

seperti yang seharusnya, bitbucket menolak merge saya karena adanya conflict. namun yang tidak diharapkan, ternyata branch saya tetap terhapus dari origin walaupun proses merge-nya gagal.

saya coba untuk me-reproduce kasus tersebut dengan repo baru.

sederhana saja, saya membuat sebuah repo, dan saya isi dengan sebuah text file test.txt, yang isinya hanya 1 baris:

 this is just test. nothing serious.  

kemudian saya push dia pada branch master.

lalu saya buat sebuah branch, branch-01, dengan base dari master. di branch-01 saya tambahkan line 2, sehingga test.txt menjadi

 this is just test. nothing serious.  
 just to add another line.  

lalu saya push dan saya buat pull requestnya (belum di-merge).



setelah itu saya kembali ke branch master dan meng-update kembali test.txt menjadi
 this is just test. nothing serious.  
 just wanna make some conflict.  

dan saya push.

kemudian secepatnya saya masuk ke halaman pull request kembali dan melakukan merge untuk pullrequest tadi, dengan men-centang 'Close source branch'.



setelah loading, maka merge saya ter-reject



tetapi kemudian ketika saya cek branch yang ada di origin repo tersebut, branch-01 telah hilang.



ketika saya coba lagi untuk merge, baru keluar pesan yang seharusnya tampil sejak awal



mengambil pelajaran dari kejadian ini, saya pikir lebih baik merge dilakukan tanpa meng-close source branch melalui web bitbucket dan melakukan delete branch secara manual setelah proses merge selesai dengan sukses.

bug ini bisa sangat merugikan, misalnya jika pada saat melakukan merge tersebut ada salah seorang anggota tim baru saja melakukan update pada branch yang sama dengan kita, dan kebetulan pada saat itu kita belum mem-pull source terbaru sehingga yang ada pada local kita bukan yang ter-update. dalam kasus demikian, walaupun branch tersebut di local kita masih ada sehingga kita bisa push lagi branch tsb dari local kita ke origin, namun tentu itu bukan versi yang kita harapkan.

semoga segera di-solve oleh tim bitbucket.

2 comments:

  1. yang nyentang close nya sebaik nya yang bikin pull request nya Bim.

    ReplyDelete
  2. Perna di team saya kejadian kayak begini pas team leadnya ngemerge. Terima Kasih untuk sharenya.

    ReplyDelete