gumara

เหนือกว่าเหตุผล ผมไม่มีเหตุผล

bzr

which file to merge

สืบเนื่องจากต้อง merge ไฟล์จาก trunk เข้า branch เพื่ออัพเดทงานแปล ทีนี้ก็ยังงงวิธีการทำงานของ LP อยู่ คือตามเซนส์แล้ว มันควรจะอัพเดทเฉพาะ pot มา แล้วพอเราเห็นว่า pot มันอัพเดทเราค่อย merge po เราเข้ากับ pot ใหม่ แต่กรณ๊ LP นี่ไม่ใช่ครับ คือพี่เล่นไม่อัพเดท pot แต่อัพเดท po ของภาษาเรามาเลย แล้วไอ้ที่อัพเดทของพี่แกนี่ก็ไม่ใช่ว่า merge คำให้แล้วอัพเดทลงมานะ (คือจริงๆพอมี branch แล้วก็ยากที่จะ merge จาก branch เข่ trunk ได้อยู่แล้ว)

ดังนั้นแปลว่า ถ้า po อัพเดทมาจะเกิด conflict ซึ่ง bzr มันก็บอกให้ พร้อมกับแยกไฟล์ให้ โดยถ้าเกิดมี conflict มันจะแยกไฟล์จาก th.po เป็น th.po, th.po.BASE, th.po.OTHER, th.po.THIS คือจากไฟล์เดียวที่ conflict มันแยกให้เป็น 4 ไฟล์ ก็งงดิคับ จริงๆ มันแยกเป็น 2 ไฟล์ก็พอ คือไฟล์ของเราปัจจุบัน กับไฟล์ใหม่จาก trunk แค่นี้พอแล้ว เลยงงเลย

โดยปกติก็ไม่เคย merge งานเอง ปกติถ้าแปลก็มีหน้าที่โยนงานให้ @theppitak ตอนนี้มาดูเองเลยต้องรู้ไว้หน่อย ไม่รู้ VCS ตัวอื่นๆ มันเหมือน bzr ป่าว

ก็พอมันแยกไฟล์แบบนี้เลยผมก็เลยไม่รู้ว่า อันไหนไฟล์ branch อันไหนไฟล์ trunk ก็เลยใช้วิธี ไปดูดจากหย้าเว็บ แล้วมา check sum เอา ผลลัพธ์ตามด้านล่างนี้

gumara@user-desktop:~/bzr/ubiquity-l10n-th$ md5sum /home/gumara/Downloads/th*
cb6cf2e82f58b29aaf72e972d24ed858 /home/gumara/Downloads/th-branch.po
7545f0656854ce65b63a95c642528258 /home/gumara/Downloads/th-trunk.po

gumara@user-desktop:~/bzr/ubiquity-l10n-th$ md5sum po/th*
a530473c367b8bb18ef3ed3c19524df4 po/th.po

create branch for translation

กลับมาจากอยุธยา มาถึงก็โซโล่ ubuntu translation ต่อ ก่อนไปก็ดูๆเรื่องการแปลผ่าน bzr ไว้ แต่เดิมก็เคยงงๆ แต่ตอนนี้หลังจากลองผิดลองถูกมาก็คิดว่าน่าจะได้วิธีที่ถูกต้องละ (เลวมาก ไม่ยอมอ่าน manual) จริงๆ จรูญก็ส่งลิงก์มาให้อ่านละ แต่ยังมีงงๆเรื่องความสัมพันธ์ของโครงการ

ตอนนี้เซ็ต branch เรียบร้อย คิดว่าน่าจะทำถูกวิธีละ คือตามนี้

  • เข้าไปที่หน้า ubuntu-manual ไป register branch จริงๆ ก็คือการสร้าง branch ใหม่นั่นเอง
  • ระบุ branch ใหม่ว่า เจ้าของเป็น lp-l10n-th แล้วมันจะไปโผล่ในหน้า lp-l10n-th เอง
  • ก็ bzr branch จาก lp:ubuntu-manual ออกมา
  • ครบแล้วก็ bzr push กลับขึ้นไปที่ branch ของ lp-l10n-th
  • แล้วก็ทำงานที่ branch ของ lp-l10n-th
  • เวลาจะอัพเดทก็สั่ง bzr pull lp:ubuntu-manual ที่ branch ของ lp-l10n-th
  • เวลาจะ merge เข้าโครงการหลัก มันจะมีปุ่มให้ request merge ที่หน้าเว็บ
  • ทีนี้ถ้าใครต้องการจะแตก branch ไปแปลต่อ ก็ให้แตกไปจาก lp-l10n-th

คิดว่าวิธีนี้น่าจะถูก

ปล.เกลียด bzr มัน branch เฉพาะโฟลเดอร์ไม่ได้ ฮาร์ดดิสก์ก็ตัวกะป๊อย branch มาทั้งโครงการ เพื่อมาแก้ po แค่ไฟล์เดียว

bzr pull

จะอัพเดท Branch จาก launchpad ทีนี้ จำได้ว่า ก็แค่เข้าไปใน folder ที่จะอัพเดท แล้วสั่ง bzr branch มันก็จะดึงมาเอง แต่ปรากฏว่าไม่ใช่ (แต่จำได้ว่ามันสั่งแบบนี้จิงๆนะ) เลยเสริชหาจนเจอว่ามันสั่ง bzr pull (ตั้งชื่อได้ดี push กะ pull จำง่ายดี)

จบล๊ะ

แถม http://wiki.petemckinstry.com/bzrcheatsheet

bzr update

หลังจาก register brach ของ ubuntu desktop course ไว้ แล้วยังไม่เคยลองมือแปลเลย วันนี้เลยว่าจะแปลซะหน่อย ทีนี้ พอจะแปล ก็เลยจะ update จาก branch หลัก ซะหน่อย ซึ่งถ้าเป็น svn ก็ svn update ทีนี้ พอ bzr มันต้องยังไงหว่า หาวิธีอยู่ครึ่งชั่วโมงได้

วิธีคือ

cd เข้าไป directory ของตัวงานที่ทำอยู่
สั่ง bzr merge
รอ

ใช้ bzr ผ่าน launchpad

ความเดิมจากตอนที่แล้ว ผมพยายามจะแปล https://launchpad.net/ubuntu-desktop-course แต่ยังไม่มีใครทำภาษาไทยไว้ให้ แล้วก็รู้สึกไม่มีให้แปลใน Rosetta ด้วย คือ ประมาณว่าเขาไม่ได้ Register project ไว้เป็นงานแปล (เรียนตามตรง ผมยังไม่ค่อยเข้าใจระบบของ Launchpad สักเท่าไหร่นะ ปกติใช้แต่ Rosetta) ทีนี้ ผมเลยต้องมา Create branches ของตัวเอง เพื่อทำภาษาไทยลงไป (เวลาใช้ศัพท์เทคนิคนี่มันโคตรเท่เลยจริงๆ)

ทำความเข้าใจก่อน ผมเข้าใจว่า ด้วยโพรเซสประมาณนี้ นี่คือวิธีเข้าไปร่วม develop program นะ เพียงแต่ว่า program ที่ผมจะร่วม develop นี้ คือโปรแกรมหนังสือ (งงม๊ะ)


Let's chat

Comment

Tags

tweets

del.icio.us/~

Another ~

The Ubuntu Counter Project - user number # 5754
Add to Technorati Favorites