LP#1: Bazaar 5 นาที


Posted in:

บทความนี้เป็นการแนะนำการใช้งาน Bazaar นะครับ โดย bazaar(bzr) จะเป็นระบบ version control ครับ คือทุกอย่างที่แก้ เราสามารถดูย้อนหลังกลับไปได้เสมอ และเราจะให้ Launchpad.net โฮสโค๊ดของเราครับ
สำหรับบทความนี้นั้นจะอ้างอิงจาก http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html นะครับ

1. ก่อนอื่นต้องมี Account Launchpad.net เสียก่อนครับ วิธีการอ่านได้ใน แปล ubuntu กัน ครับ
2. จากนั้นเราก็ติดตั้ง bazaar ให้เรียบร้อยครับ

sudo apt-get install bazaar

3. ทีนี้ เราก็ต้องแจ้งให้ทราบก่อนครับว่าเราเป็นใคร

$ bzr whoami
Win <whs@WHSDesktop1>

สังเกตว่ามันไม่ถูกนะครับ โดยเฉพาะอีเมลนี่ผิดเลยแหละครับ ดังนั้นเราต้องแก้ไขให้ถูกครับ(จริงๆ แล้วไม่แก้ก็ได้ครับ แต่เวลาขึ้นไปใน Launchpad จะดูดีกว่าครับถ้าเป็นชื่อเราเลย)

bzr whoami "Manatsawin Hanmongkolchai <whs@whsgroup.ath.cx>"

จากนั้นลอง bzr whoami ใหม่ดูครับจะเห็นว่าเป็นชื่อเราแล้ว
4. ทีนี้ ถ้าจะพัฒนาอะไร ก็ต้องมีไฟล์ก่อนใช่ไหมหละครับ ดังนั้นให้สร้างงานของเรามาก่อนครับ ในกรณีนี้ขอเป็นไฟล์ว่างๆ พอครับ

$ mkdir bzr-vc/hello -p
$ cd bzr-vc
$ touch a b c d hello/world # สร้างไฟล์ a b c d และ hello/word

5. จากนั้นก็บอก bazaar ว่าตรงนี้เป็นที่ๆ จะต้องทำ version control ครับด้วยคำสั่ง

bzr init

6. เสร็จแล้ว เราก็เพิ่มไฟล์ที่อยู่ใน folder ปัจจุบันทั้งหมดครับด้วยคำสั่ง

bzr add

โดยมันจะ add ทุกไฟล์ใน folder ให้ครับ
7. เรียบร้อยแล้วเราก็กำหนดให้สภาพปัจจุบันนี้เป็นรุ่นๆ หนึ่งครับด้วยคำสั่ง

bzr commit

จากนั้นจะเป็นโปรแกรม nano ขึ้นมาครับ ให้เราพิมพ์ข้อความเข้าไป(ตรงที่ cursor อยู่นั่นแหละครับ) ว่าเราแก้ไขอะไรบ้างในรุ่นนี้ เช่นผมพิมพ์ testing bazaar นะครับ จากนั้นกด ctrl+x y (กด ctrl+x ปล่อย แล้วกด y) เพื่อเซฟครับ แต่ถ้าเกิดว่าที่ bzr เปิดให้เป็นโปรแกรม vim แล้วใช้ไม่เป็น ให้ออกด้วยคำสั่ง esc :q ครับ(กด esc พิมพ์ :q) แล้วพิมพ์

export VISUAL=nano

จากนั้นลองใหม่ครับ
8. เอาหละครับ ได้เวลาลองระบบรุ่นดู โดยลองแก้ไขไฟล์ไหนไฟลหนึ่งครับ เช่นผมเติม hello world ไปยังไฟล์ a นะครับ

echo 'hello world' > a

จากนั้น bzr จะสามารถบอกได้ครับว่าเราแก้ไขไฟล์ไหนไปบ้างด้วยคำสั่ง

$ bzr diff
=== modified file 'a'
--- a 2008-05-31 05:06:45 +0000
+++ a 2008-05-31 05:10:06 +0000
@@ -0,0 +1,1 @@
+hello world

แบบนี้เป็นลักษณะของ diff ครับ อาจจะดูยุ่งยากเล็กน้อยครับเพราะแบบนี้ออกแบบให้เครื่องประมวลผลได้ด้วยครับ
9. เสร็จแล้วก็ทำเป็นรุ่นใหม่เลยครับด้วยคำสั่ง

bzr commit

ดังเดิม

เรียบร้อยแล้ว ต่อไปเป็นการเอาขึ้น Launchpad นะครับ

1. ก่อนอื่นให้เราจัดการส่งกุญแจ ssh เราขึ้นไปก่อนครับ โดยกุญแจที่ใช้ต้องไม่ติด blacklist นะครับ (ตรวจสอบโดยคำสั่ง

ssh-vulnkey

ถ้าไม่มีให้อัปเดต openssh ใหม่ครับ ถ้าติดให้

ssh-keygen

ใหม่ครับ) โดยเข้าไปที่หน้าผู้ใช้ของเราใน Launchpad(https://edge.launchpad.net/~ชื่อผู้ใช้) แล้วกด Update SSH keys ครับ จากนั้นก็ให้นำ public key ของเราใส่เข้าไป โดยสั่ง

cat ~/.ssh/id_*.pub

แล้วเอา output แปะลงในช่องครับ
2. create branch ที่จะเก็บโค๊ดของเราครับ ให้เข้าไปที่หน้าผู้ใช้ของเรา แล้วกด code ด้านบน กด register a branch ครับ กรอก Name เป็นชื่อโครงการของเรา(เช่นผมใช้ testbzr) และเลือกเป็น hosted ครับ ที่เหลือไม่ต้องกรอกครับ
3. จะเห็นดังนี้ครับ

Update this branch: bzr push lp:~whs/+junk/hellobzr

ให้เอาคำสั่งที่เห็นมารันเลยครับ
ทีนี้ ถ้าเจอปัญหา

bzr: ERROR: Transport operation not possible: http does not support mkdir()

ให้ลอง

bzr launchpad-login ขื่อผู้ใช้

ดูครับ แล้วก็ลองใหม่ ส่วนถ้าเจอ

The authenticity of host 'bazaar.launchpad.net (91.189.94.254)' can't be established.
RSA key fingerprint is 9d:38:3a:63:b1:d5:6f:c4:44:67:53:49:2e:ee:fc:89.
Are you sure you want to continue connecting (yes/no)?

ก็พิมพ์ yes กด enter ไปเลยครับ
ถ้าเจอ

bzr: ERROR: Target directory lp:~whs/+junk/hellobzr already exists, but does not have a valid .bzr directory. Supply --use-existing-dir to push there anyway.

ก็ว่าตามเค้าเลยครับ คือเติม --use-existing-dir ต่อท้ายเลย
ถ้าไม่มีปัญหาใดๆ แล้วก็น่าจะสามารถ push เข้าไปได้เลยครับ ซึ่งให้รอประมาณ 5 นาทีแล้ว refresh หน้าที่มีคำสั่ง ก็จะขึ้นรายละเอียด พร้อมคำสั่งดึงข้อมูลให้ครับ

มีข้อดีหร

มีข้อดีหรือข้อเสียอย่างไร เมื่อเทียบกับ SVN อ่ะครับ อยากรู้อ่ะ อ่านๆแล้วยังไม่ค่อย เก็ท อ่ะ

bzr

bzr นี้เป็นระบบ decentralize ครับ คือเวลา commit จะทำบนเครื่องเราไม่ขึ้น server ครับ ต้องสั่งให้เอาขึ้นไปถึงจะขึ้นให้ครับ(ขึ้นหลายๆ rev ได้ครับ)

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options