วันพฤหัสบดีที่ 4 มิถุนายน พ.ศ. 2558

trunk, branch, tag คืออะไร

 คือที่ผมเขียนบทความนี้คือ เห็น คนอื่นเถียงกันแล้วต้องมาทะเลาะกันเป็นตุเป็นตะ เห็นแล้ว เหนื่อยแทน

เวลาที่เราใช้พวก Version Control ไม่ว่าจะเป็นตระกูล SVN หรือ Git ก็ตาม เลี่ยงไม่พ้นที่จะเจอคำสามคำนี้ trunk, branch, tag ไอ้ 3 คำ นี้เราจะต้องเข้าใจในระดับหลักการให้ดีก่อน ถึงจะสามารถประยุกต์ใช้งานได้อย่างมีประสิทธิภาพ
trunk แปลว่า ลำต้น (ให้นึกถึงต้นไม้ไว้นะครับ แถวบ้านเรียกว่า กก ครับ) มันหมายถึง Source หลักของเรา
branch แปลว่า กิ่ง กิ่งของมันก็จะแตกออกไปจากลำต้นใช่ไหมครับ คงไม่มี กิ่งไม้แตกจากใบหรอกใช่ไหม ฮ๊ะๆ แต่เป็นตัวของตัวเอง มันจะหมายถึง 1  Feature ที่เราแยก Team ออกไปทำต่างหาก
tag แปลว่า เอิ่ม อันนี้แปลไม่ถูกแฮ่ะ แต่ในความหมายของ Version Control คือตำแหน่งที่เรามาร์คไว้ว่านี่คือ Program Version  ที่เท่าไรของเรา

แรกๆก็งงอย่าว่าแต่พวกท่านเลย ใครก็ตามที่ยังไม่เคยใช้ Version Control อย่างชำนาญ งงทุกคน ไม่ต้องกังวล เดี๋ยวผมจะค่อยๆเล่าให้ฟังแล้วจะหายงงเอง
ในโปรแกรมพวก Version Control  ใน  Source Code ทั้งหมดเราจะวางแผนเก็บมันไว้ใน trunk ถ้าคนน้อยๆแค่ 2-3 คน เราจะพัฒนาโค้ดกันใน trunk เลย แต่ถ้าทีมมีหลายคนแล้วแบ่งกลุ่มกันพัฒนาเป็น Featureๆ ไป เรามักจะแตก branch ออกไปให้แต่ละกลุ่ม Develop กันใน branch การแตก branch นั้นมันจะทำให้โค้ดของแต่ละกลุ่มไม่แตะต้องกันเลย คือ branch หนึ่งจะไม่เห็นการเปลี่ยนแปลงโค้ดของอีก branch หนึ่ง มันแยกอิสระกันเลยทีเดียว ทำให้การพัฒนาโค้ดง่ายมาก ถ้ากลุ่มไหนพัฒนาเสร็จก่อน ก็ไม่จำเป็นจะต้องรอให้อีกกลุ่มเสร็จ branch ที่แตกออกไปก็สามารถ Test  Code ได้อย่างอิสระ ทีนี้พอหลังจากTest  Code จนพอใจว่าไม่มี bug ละ เราก็จะทำการรวม Source Code จาก branch เข้ามาสู่ trunk ซึ่งหน้าที่ในการผสานโค้ดนั้น ตัวโปรแกรมจะทำให้อยู่แล้ว ถ้าเกิดว่ามีการชนกันของโค้ด มันก็จะแสดงให้โปรแกรมเมอร์ทำการแก้ไข
เมื่อเราพัฒนาโปรแกรมเราจนสมบูรณ์พร้อมสำหรับการขายหรือว่าส่งออกสู่ตลาด เราก็จะ tag ตำแหน่งตรงนี้ไว้ว่า เวอร์ชั่น 1.0
หลังจากนั้นก็เข้าสู่กระบวนการเดิมในการพัฒนา คนน้อยก็ไม่ต้องแตก branch คนมากแบ่งเป็นกลุ่มๆก็แตก branch ออกเป็น branch พัฒนาเสร็จสั่งให้โปรแกรม merge โค้ดจาก branch เข้าสู่ trunk จะส่งออกตลาดก็ tag ตำแหน่งไว้ว่า เวอร์ชั่น 2.0
ทีนี้ถ้าเซลล์ของเราเดินไปหาลูกค้าแล้วโม้กับลูกค้าว่า พี่ผมมีโปรแกรมขาย 2 เวอร์ชั่นนะพี่ เวอร์ชั่น 1.0 ราคาถูกกว่านะพี่นะ แต่ฟีเจอร์มันจะน้อยกว่าเวอร์ชั่น 2.0 นะพี่ ผมแนะนำพี่ว่าซื้อ 2.0 เลยพี่ (คิดในใจ ค่าคอมผมจะได้เยอะกว่านะพี่) แต่ลูกค้าเลือกจะซื้อเวอร์ชั่น 1.0 เราก็ export โค้ดจากตำแหน่ง tag เวอร์ชั่น 1.0 ไปขายได้
3 คำนี้พอสรูปได้จากสิ่งที่ผมกล่าวไว้ด้านบนนั่นแหละ
ฝรั่งมันแปลกนะ มันชอบโยงอะไรๆไปเกี่ยวข้องกับต้นไม้อยู่เรื่อย ไม่ว่าจะเป็น family tree, โครงสร้างข้อมูลแบบ tree และอื่นๆอีกหลายตัว
แถมท้ายด้วยภาพ
 ที่มา :http://www.select2web.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น