หน้าที่ของ trunk, branch และ tag ใน Subversion

ส่วนที่สำคัญคือ trunk, branches, และ tags ที่จริงแล้วชื่อพวกนี้ไม่ได้เป็นข้อบังคับหรือว่าอะไรเลย ไม่ได้มีความหมายพิเศษต่อการทำงานของ SVN ด้วย แต่ว่าเป็นอะไรที่คนส่วนใหญ่เค้าตกให้ไปในทางเดียวกัน แต่ใน SVN ก็จะมองเป็นโฟลเดอร์ธรรมดาๆ ดังนั้นเราจึงควรทำอะไรตามคนส่วนใหญ่ จะได้สื่อสารกันได้ง่ายๆ^^

คำว่า trunk และ branches มาจากส่วนประกอบของต้นไม้ คือ ลำต้น และ กิ่ง โดยลำต้น

trunk ก็จะหมายถึงสายการพัฒนากลางหรือสายพัฒนาหลัก และเวอร์ชันล่าสุดของโปรเจกก็มักจะอยู่ที่นี่ ถ้าอยากได้ซอร์สโค้ดของโปรเจคก็ควรจะ check out จากที่นี่ครับ และ trunk ก็จะถูกคาดหวังว่าจะสามารถนำไป build และ compile เพื่อใช้งานได้

branch เป็นกิ่งก้านสาขาที่แตกออกมา (ในกรณีปกติก็คงแตกออกมาจาก trunk นั่นแหละ) อาจจะแตกออกมาเพื่อให้คนๆหนึ่งไปรับผิดชอบ feature หนึ่งๆ เพราะเกรงว่าการแก้ไขโดยคนนั้นๆทำไปทำมาจะทำให้ trunk เจ๊ง (คอมไพล์ไม่ผ่าน) ก็เลยให้ไปทำใน branch ซะ แน่ใจว่าเสร็จแล้วค่อยเอามารวม (merge)

tag อันนี้แปลง่ายๆคือมันเป็น snapshot (ง่ายตรงไหนวะ …) คือเหมือนเป็นการบันทึก state ณ เวลาหนึ่งๆไว้นั่นเอง มักถูกใช้ในการเก็บเวอร์ชันต่างๆไว้ เป็นต้นว่า 1.0.0 ตอน release เวอร์ชัน 1.0.0 เป็นต้น ถ้าทำไปเรื่อยๆจนถึงเวอร์ชัน 2.1 แล้ว อยากดูโค้ดตอนที่ release 1.0.0 ว่าเป็นยังไงก็เปิด tags/1.0.0 ได้

ทั้งการทำ branch และ tag นั้น เป็นเพียงการ copy trunk ไปใส่ไว้ใน branches และ tags เท่านั้น ซึ่งการ copy ผ่าน SVN มันก็จะเป็นแค่การคัดลอก reference มา ดังนั้นจึงทำได้เร็วมาก และหายห่วงเรื่องไฟล์ซ้ำซ้อนได้เลย

One Response to “หน้าที่ของ trunk, branch และ tag ใน Subversion”

  1. zz Says:

    ths