เรียนรู้และใช้งาน Subversion (SVN) เพื่อการจัดการ Source Code ที่ยั่งยืนด้วย Google Code

คนที่เป็นโปรแกรมเมอร์ทุกคนคงรู้ดีนะครับว่าในการเขียนโค็ดตั้งแต่เริ่มต้นจนถึงสิ้นสุดโปรเจ็คนั่นมันยาวนานและยุ่งยากมากทั่งในเรื่องของการเขียนโค็ด การออกแบบโปรแกรม การตกแต่งหน้าตาโปรแกรม ...... อีกมากมายนะครับ แต่ในวันนี้เราจะมาเรียนรู้เกี่ยวกับการแบ็คอัพโค็ดของเรานะครับ ผมคิดว่าเพื่อนๆหลายคนคงเคยแน่นอนที่เวลาเขียนโปรแกรมแล้วต้องแบ็คอัพโค็ดเดิมไว้ก่อน แล้วถึงจะเริ่มเขียนของใหม่เพิ่มเข้าไปโดยส่วนมากแล้วการแบ็คอัพที่ง่ายและถึกที่สุดก็คือการก็อบปี้ทั้งไดเร็กทรอรี แล้วอาจจะเปลี่ยนชื่อของไดเร็กทรอรีนั่นเป็นไปตามวันที่และเวลา พอเห็นภาพมั้ยครับว่ามันยุ่งยากขนาดไหน ไหนจะควบคุมยาก เราต้องก็อบปี้เอง เปลียนชื่อเอง ...... และที่สำคัญมันเปลืองพื้นที่ HDD ครับ เพราะว่าอะไรก็เพราะว่าเราจะแบ็คอัพไฟล์ที่เราไม่ได้เปลียนด้วยไงครับ ยกตัวอย่างเช่นถ้าการเปลี่ยนแปลงครั้งนั่นเราเปลี่ยนแค่ Text ไฟล์ตัวเดียวแล้วเราเล่นแบ็คอัพทั้งไดเร็กทรอรีที่มีขนาด 100MB ทุกครั้งนี้ก็ไม่ใช่วิธีที่ฉลาดเลยครับ เอาละครับพูดมาเยอะเละเรามาเริ่มเรียนรู้การใช้งาน Subversion กันเลยดีกว่าครับ

Subversion คืออะไร

Subversion คือ free/open source นะครับโดยชื่อเต็มๆ ของมันก็คือ Version Control System (VCS) ซึ่งตัวมันเองนั่นทำงานโดยการจัดการระบบแบ็คอัพของไฟล์โดยเราสามารถที่จะดู History ย้อนหลังได้โดยการจัดเก็บจะเก็บ Version ตัวโปรแกรมสามารถจะ Recovery ไฟล์ได้ในทุกๆ Version History พอมองภาพออกกันแล้วหรือยังครับว่าถ้าเราใช้งานเจ้่า Subversion Control นี้กับโค็ดของเรา เมื่อเราแบ็คอัพโค็ดของเราเราก็ไม่ต้องเก็บไฟล์ทั้งหมด เราแค่แบ็คอัพไฟล์ที่เราได้มีการเปลี่ยนแปลงเท่านั่นเองครับ แล้วเมื่อเวลาที่ไฟล์ของเรานั่นหายไป หรือเสียหายจากสาเหตุอะไรก็ตามเราก็สามารถใช้เจ้า Subversion นี้ Recovery ไฟล์องเรากลับมาได้โดยเราสามารถเลือกได้ด้วยว่าเราจะ Recovery ไฟล์ใน Version ไหนที่เราได้แบ็คอัพไปก็ได้ครับ เราสามารถแยกข้อดีของ Subversion ได้เป็นข้อๆดังนี้ครับ
  • สามารถ Backup และ Restore ไฟล์ได้
  • Synchronization ไฟล์ทำให้ไฟล์นั่นเป็นเวอร์ชั่นใหม่เสมอไม่ว่าจะมีผู้ใช้งานไฟล์นั่นกี่คนก็ตาม
  • สามารถ Track back history ของแต่ละไฟล์ได้
  • ใน History นั่นสามารถบอกรายละเอียดได้มากกว่าการจัดเก็บแบบธรรมคือสามารถบอกได้ว่าไฟล์นี้ใครเป็นเจ้าของ และใครบ้างที่แก้ไขไฟล์นี้
  • ควบคุมจัดการได้ง่ายเมื่อต้องการควบคุมโค็ดที่พัฒนาโดยโปรแกรมเมอร์หลายคนในทีม

จากรูปผมขอยกตัวอย่างง่ายๆ นะครับเช่นในทีมของเรามี 3 คนที่ต้องทำงานกันอยู่ในโปรเจ็ดเดียวกัน แล้วทั้ง 3 คนนั่นก็ต้องแก้ไขไฟล์เดียวกันที่ชื่อว่า A.java ถ้าสมมุติว่าทั้ง 3 คนนั่นต้องการที่จะแก้ไขไฟล์ A.java ในเวลาเดียวกันเช่น คนแรกเซฟไฟล์ก่อน คนที่สองเซฟตาม คนที่สามตามไปติดๆ แน่นอนครับข้อมูลบางส่วนจะหายไปเพราะสุดท้ายแล้วไฟล์ที่จะเป็นก็คือไฟล์ของคนที่สาม เพราะว่าคนที่สามไม่ได้อัพเดทไฟล์ของคนที่หนึ่งแลพที่สองก่อน เห็นมั้ยครับว่าถ้าเราทำงานโค็ดเดียวกันหลายคนปัญหาแบบนี้เกิดขึ้นแน่นอน แต่ทว่าถ้าเราใช้ Subversion ตัว Subversion เองจะจัดการเรื่องพวกนี้ให้เราอัตโนมัติเลยครับ เพราะว่าถ้าใช้ Subversion แล้วไฟล์สุดท้ายก็จะเป็นไฟล์ที่ได้รับการแก้แล้วของทั้งสามคนครับ

ใช้งาน Subversion ต้องทำไงบ้าง

หลักๆ ตัว Subversion ทำงานแบบ Client Server ดังนั่นเราจำเป็นที่จะต้องมี Subversion Server ก็นะครับเราก็ทำได้โดยการติดตั้งโปรแกรมแต่ในบทความนี้ผมจะไม่ขอกล่าวถึงการติดตั้ง Subversion Server นะครับแต่ผทจะขอกล่าวถึง Google Code ที่ซึ่งเป็นอีกหนึ่งบริการดีๆ จาก Google โดยตัวเจ้า Google Code เองนั่นสสร้างขึ้นมาเพื่อ Developer ครับตัวมันเองจะทำหน้าที่เหมือน Subversion Server ทุกประการเราไม่จำเป็นที่ต้องติดตั้ง Server เองเลยครับแต่ๆ มีข้อแม้ว่าทุกๆ ดโค็ดที่เก็บอยู่ใน Google Code นั่นจะต้องเป็น Open Project หรือว่าเป็น Open Source Code นั่นเองครับ กล่าวคือใครๆ ก็สามารถดาวโหลดโค็ดของเราไปใช้งานได้ครับ :-)

เตรียมพร้อมกับ Google Code

ก่อนอื่นเราจะต้องมี Google Account ก่อนนะครับถึงจะใช้งาน Google Code ได้เมื่อเรามี Google Account แล้วไฟต่อที่นี้เลยครับ http://code.google.com/ คลิ๊ก Create a new project


เราจะลองสร้างโปรเจ็คขึ้นมาสักตัวนะครับชื่อว่า test-simple-google-code โดยเราจะใช้โปรเจ็คนี้ในการเขียนโปรแกรม HTML ขึ้นมาสักตัวนะครับ



เมื่อเราสร้างเสร็จแล้วจะได้หน้า Project Home ของเราประมาณนี้นะครับ


ให้เราคลิ๊กเลือก Sources Tab นะครับเพื่อเราจะดูว่าโฟรเจ็คของเรานั่นมี URL อยู่ที่ไหนนะครับ


มาถึงขั้นตอนนี้แล้วอีกอย่างเดียวที่เราจ้องการก็คือ Password นะครับเราสามารถดู Password ของเราได้จาก Profile นะครับ


เพียงเท่านี้เราก็สร้างโปรเจ็คชื่่อว่า test-simple-google-code บน Google Code เรียบร้อยแล้วนะครับที่เหลือก็เพียงแต่ Setup SVN Client ที่เครื่องของเราเพื่อที่จะ Checkout Project Directory มาครั้งแรกเท่านั่นครับ อ่านต่อกันเลยครับ

เตรียมพร้อมกับ Subversion Client ด้วย TortoiseSVN

ก่อนอื่นเลยเราต้องไปดาวโหลดตัวโปรแกรม TortoiseSVN มาก่อนครับจากที่นี้ครับ http://tortoisesvn.net/downloads.html ตัวโปรแกรม TotoiseSVN นี้จะทำหน้าที่เป็น Subversion Client ครับเพื่อจะทำหน้าที่ติดต่อกับ Subversion Server เมื่อดาวโหลดมาเรียบร้อยแล้วก็ติดตั้งเลยนะครับ ขึ้นตอนการติดตั้งผมไม่ได้เขียนไว้ในบทความนี้นะครับเพราะว่ามันแค่คลิ๊กๆ เท่านั่นนะครับ เมื่อติดตั้งโปรแกรมเสร็จให้รีสตาร์เครื่องหลังจากติดตั้งเสร็จรอบหนึ่งก่อนนะครับ เพื่อให้ตัวโปรแกรม TotoiseSVN นั่นได้ติดตั้งการทำงานในระบบ Windows ก่อนนะครับ

เมื่อติดตั้งเสร็จเรียบร้อยแล้วถ้าไม่มีปัญหาอะไรเราจะได้เมนูใน Contextual Menu ประมาณนี้นะครับ


มาถึงตอนนี้เราจะ Checkout Directory Project ของเราจาก Google Code มาไว้ที่เครื่องของเรานะครับโดยผมจะเก็บไว้ใน C:\test นะครับ


จะมีวินโดว์หน้าตาแบบนี้ขึ้นมาเพื่อให้เราใส่ URL ของ Source Code URL นะครับ


ส่วนตัว Source Code URL เราสามารถก็อบปี้ได้จาก


เมื่อเรา Checkout เสร็จเรียบร้อยเราก็จะได้หน้าจอแสดงผลประมาณนี้นะครับ


เมื่อเรามาดูที่ C:\test ก็จะมี Directory .svn ถูกสร้างขึ้นมานะครับ .svn นี้ห้ามลบเด็ดขาดนะครับเพราะว่าตัวโปรแกรม TortoiseSVN ของเรานั่นจะใช้ .svn นี้ในการจัดการเกี่ยวกับไฟล์ Version นะครับ


มาถึงคร่าวนี้เราจะมาสร้าง HTML ไฟล์ง่ายๆ สักไฟล์นะครับเพื่อเราจะลองใช้งาน Subversion ของเรานะครับ โดยผมจะเขียนโค็ดตามด้านล่างแล้วบันทึกไฟล์ไว้ที่ C:\test\test.htm นะครับ


จากนั่นเราก็ทำการ Add ไฟล์ที่เราต้องการจะทำ Subversion โดยการแอดไฟล์นั่นเข้าไปที่ Local SVN (.svn นั่นเละครับ) ก่อนนะครับทำได้โดย


เมื่อทำการ Add เรียบร้อยเราควรจะได้ Icon ประมาณนี้นะครับ


จากนั่นเราก็ทำการ Commit ส่งไฟล์ของเราขึ้นไปยัง Google Code Subversion Server นะครับ


จะมีหน้าจอขึ้นมาเพื่อให้เราใส่ข้อมูลหรือว่า Log ว่าในแต่ละครั้งที่เรา Commit ขึ้นไปนั่นมีรายละเอียดยังไงบ้าง หรือพูดง่ายๆว่าก็คือเตือนความจำเองนั่นเละครับ


เมื่อเรากด OK จะมีหน้าจอขึ้นมาถามเรา Username Password ให้เราใส่ไปนะครับ Username คือ Email ของเรานะครับส่วน Password ก็คือที่เราได้จากหน้า Setting ครับ


เมื่อการ Commit ไม่มีปัญหาอะไรเราก็จะได้ Revision เป็น 2 เพิ่มมาแล้วนะครับ


ที่นี้เราลองแก้ไขไฟล์ test.htm ของเรากันนะครับ เพราะว่าเดี่ยวจะลองดู History ของการแก้ไขไฟล์กันนะครับ ว่าไอ้เจ้า Subversion นี้มันเมพขิงๆ จริงๆ ครับ ลองแก้ไฟล์ตามนี้นะครับ


เมื่อเราแก้ไฟล์แล้วสังเกตุที่ Icon นะครับจะเป็นเครื่องหมายตกใจ นั่นแสดงให้เห็นว่าไฟล์ของเรามีการเปลี่ยนแปลงไงครับ


เหมือนเดิมครับเราก็ Commit กลับขึ้นไปที่ Google Code Subversion Server นะครับ


ในขั้นตอนนี้ถ้าเราต้องการจะดูว่าไฟล์เรานั่นมีการแก้ไขอะไรบ้างนั่นเราก็สามารถดับเบิ้ลคลิ๊กที่ไฟล?ที่เราจะดูได้เลยครับแล้วจะมีหน้าต่างเปิดขึ้นมาแสดงว่าทั้งไฟล์ก่อนการแก้ไข และไฟล์หลังการแก้ไขเป็นยังไงบ้าง


เมื่อเรา Commit เสร็จสังเกตุนะครับว่า Revision จะเป็น 3 แล้วนะครับ นั่นไงครับ Version Control ที่เราพูดถึงเราสามารถมาดู History ได้อีกทีในภายหลังครับ


ถ้าเราต้องการที่จะดูว่า History ของไฟล์นั่นเป็นไงบ้างเราสามารถดูได้โดย


จะมีหน้าต่างแสดงรายละเอียด Commit ทั้งหมดที่เรา Commit ไปนะครับเราสามารถดูรายละเอียดได้โดยดับคลิ๊กไฟล์ที่เราต้องการดูเลยนะครับ


เห็นมั้ยครับเพียงง่ายๆ เท่านี้เราก็สามารถ Control ดค็ดของเราได้อย่างง่ายแล้วนะครับไม่ได้ยากอะไรเลย ยังไงก็ลองนำไปปรับใช้งานกันดูนะครับ ถ้าอ่านแล้วชอบอย่าลืมช่วยกด Like และให้กำลังงใจ Fan Page ที่ http://www.facebook.com/PStudioDev ด้วยนะครับ 

ส่วนเรื่องรายละเอียดเกี่ยวกับ Source Control สามารถอ่านเพิ่มเติมได้ที่ http://nuengkungdeveloper.blogspot.com/search/label/Version%20Control มีผู้ใจดีเขียนบทความดีดีไว้แล้วครับ

ขอบคุณครับ