โดยหลักๆ Folder ที่ใช้ใน subversion มี trunk, branches และ tags

  • trunk คือที่เก็บ code หลักของเรา
  • branches ใช้ในกรณีที่ต้องการทดลอง feature บางอย่าง (ที่แยกออกไปเพราะไม่ต้องการให้กวนกับ code หลักที่คนอื่นๆกำลังทำงานอยู่)
  • tags ใช้ในการกำหนด version ที่ release ออกมา เพื่อให้สะดวกกับการแก้ bug

การใช้งาน branches กับ trunk มีอยู่ 2 ลักษณะ
ลักษณะแรก ทุก feature ที่ทำ ให้ทำที่ branches เท่านั้น, พอผ่านการอนุมัติแล้วค่อย merge มาที่ trunk
ลักษณะที่สอง การแก้ code ต่างๆทำที่ trunk เลย, ยกเว้นว่าการแก้ไขที่มีผลกระทบเยอะ และไม่แน่ใจว่าเป็นทางที่ถูกหรือเปล่าหรือทดลองทำ ก็ให้ไปทำที่ branches

Subversion เป็นโปรแกรมระบบควบคุมเวอร์ชั่นที่เป็นโอเพนซอร์ส การใช้งาน Subverson คุณสามารถบันทึกประวัติของโค้ด ไฟล์ และเอกสาร ต่างๆ ได้ง่าย การเก็บข้อมูลของ Subversion เราเรียกว่า repository ซึ่งคล้ายๆ กับ file server ยกเว้นแต่ว่ามันจำได้ว่าไฟล์หรือไดเรคทอรีนั้นๆ เปลี่ยนแปลงตรงไหนอย่างไร เรามาลองติดตั้ง SVN Server บน Ubuntu และเรียกใช้งาน SVN กันครับ

วิธีการติดตั้ง เราต้องกำหนด SVN Repository กันก่อน อาจเก็บไว้ที่ /home/svn แล้วเราจะมีโปรเจคย่อยๆ ในนั้น เช่น myproject เป็นต้น ให้คุณสร้างไดเรคทอรีสำหรับ SVN Repository ดังนี้

   $ sudo mkdir /home/svn
   $ cd /home/svn
   $ sudo mkdir myproject
   $ sudo chown -R www-data myproject
   $ sudo chgrp -R subversion myproject
   $ sudo chmod -R g+rws myproject

จากนั้นสร้าง project config file โดยใช้คำสั่งดังนี้

  $ sudo svnadmin create /home/svn/myproject

วิธีการ access SVN มีหลายวิธีใน how-to นี้เราใช้ svn protocal (svn://hostname/project-name) ครับ สั่งเริ่มต้นการทำงานของ SVN Server โดยใช้คำสั่ง

  $ svnserve -d –foreground -r /home/svn

เปิด terminal มาอีกหน้านึงครับแล้วลอง checkout ไฟล์ดูโดยใช้คำสั่ง

  $ svn co svn://hostname/myproject myproject

เราจะได้ไดเรคทอรี myproject ที่ checkout มา เป็นเวอร์ชั่น 0 ให้คุณเพิ่มเติมไฟล์ลงในไดเรคทอรีนี้แล้วสั่ง add และ commit ดังนี้

  $ cd myproject
  $ echo "readme" > readme.txt
  $ svn add * –force
  $ svn commit

เท่านี้เองครับ เราก้อสามารถ commit ไฟล์ไปที่ repository ได้แล้ว ถ้าอยากทราบคำสั่งใน SVN ก้อใช้

  $ svn help

สำหรับ SVN Client ที่ใช้ง่ายๆ โดยที่ไม่ต้องพิมพ์บน command line ก้อมี RapidSVN, TortoiseSVN เป็นต้น