Version Control – สิ่งสำคัญที่ทุกโปรเจคต้องใช้

พอดีวันนี้ได้คุยกับน้องฝึกงานที่บริษัท ผมไม่ได้เป็นผู้ดูแลน้องเขา แต่ก็ช่วยเหลือกันเพราะพี่ที่ดูแลแกโหดเหลือเกิน (ฮา) พอดีได้จังหวะก็เลยบอกน้องไปว่า ตั้งแต่วันนี้ไปให้ใช้ Version Control นะ จะได้เก็บรักษาโค๊ดได้ดีหน่อย

น้องฝึกงานทำหน้าเหวอด้วยความงง … ไม่รู้ว่ามันคืออะไร ก็เลยจับน้องเขาไปเดโมที่เครื่องผม ไปนั่งอธิบายว่ามันคืออะไร คิด ๆ ไปไหน ๆ ก็อุตส่าห์นั่งอธิบายน้องฝึกงานแล้ว คงมีเด็กนักศึกษาหรือผู้สนใจจำนวนมากที่ไม่รู้ว่ามันคืออะไร ส่วนมืออาชีพคิดว่าน่าจะใช้กันทุกคนอยู่แล้ว

Version Control System หรืออาจจะถูกเรียกว่า Revision Control System หรือ Source Control System เป็นระบบหรือชุดของซอฟต์แวร์ที่ทำหน้าที่เก็บรักษาซอร์สโค๊ด และไฟล์รีซอร์สต่าง ๆ ของโปรแกรมที่เราทำงานด้วย โดยมันจะเก็บการเปลี่ยนแปลงของทุกไฟล์ในระบบเป็น version หรือ revision ของไฟล์ เพื่อที่ว่าเราสามารถดูประวัติย้อนหลังไปได้ว่าโค๊ดของโปรแกรมนั้นเคยถูกเปลี่ยนแปลงอะไรมาบ้าง และด้วยสาเหตุใดถึงต้องทำเช่นนั้น

นอกจากนี้ไฟล์โค๊ดแต่ละไฟล์อาจจะมีเวอร์ชั่นล่าสุดได้มากกว่า 1 เวอร์ชั่น ซึ่งจะเรียกว่าการแตกกิ่ง หรือ Branching ซึ่งจะมีประโยชน์มากในการที่เราต้องทำงานกับโปรแกรมมากกว่า 1 เวอร์ชั่นขึ้นไป สมมติว่าเรามีโปรแกรมเวอร์ชั่น 1 และเวอร์ชั่น 2 เราก็สร้าง Branch ขึ้นมาสองกิ่งเพื่อที่จะเก็บไฟล์ของโปรแกรมแต่ละเวอร์ชั่น

VCS รองรับการใช้งานแบบหลายผู้ใช้ ตัวระบบสามารถที่จะเก็บได้ว่าผู้ใช้ที่ทำการเปลี่ยนแปลงไฟล์นั้นเป็นใครได้ ดังนั้นการทำงานกันเป็นหมู่คณะกับโปรแกรมใด ๆ นั้นก็เป็นเรื่องสำคัญที่จะใช้ VCS ไม่เช่นนั้นการจะดูแลโค๊ดนั้นจะเป็นไปได้ยากจนถึงขั้นทำไม่ได้เลยก็เป็นได้

เราสามารถแบ่ง VCS ออกเป็นสองประเภทใหญ่ ๆ ดังนี้

  1. Centralized — ก็คือ VCS ที่มี server กลางคอยเก็บเวอร์ชั่นของไฟล์ทุกเวอร์ชั่น ผู้ใช้จะใช้ client ต่อเข้ามาเพื่อที่จะดึงโค๊ดไปใช้งานในเครื่องของตัวเอง
  2. Distributed — ก็คือ VCS ที่ผู้ใช้แต่ละคนจะเก็บเวอร์ชั่นของไฟล์เอาไว้ในเครื่องของตัวเอง และสามารถที่จะ synchronize ความเปลี่ยนแปลงของไฟล์ในแต่ละเครื่องให้เหมือนกันได้

ทั้งสองประเภทมีข้อดีและข้อเสียต่างกัน กล่าวคือ Centralize นั้นจะดูแลรักษาได้ง่ายกว่า และไม่ซับซ้อน แต่ Distributed นั้นจะยืดหยุ่นมากกว่าและผู้ใช้จะมีอำนาจหน้าที่มากกว่า ก็ต้องดูกันว่าทีมตัวเองนั้นเหมาะกับการใช้ VCS แบบไหนนะครับ

ข้างล่างนี้เป็นตัวอย่างระบบ VCS ที่ได้รับความนิยมในปัจจุบัน

การใช้งาน VCS นั้นที่จริงก็ไม่มีอะไรยาก ถ้าเกิดว่าเราใช้งานคนเดียว บนเครื่องเดียว ที่ต้องทำจริง ๆ ก็แค่ไปดาวน์โหลดโปรแกรมมาแล้วก็สร้าง repository ในเครื่องเราก็จบแล้ว แต่ถ้าเกิดว่าถ้าทำงานกันเป็นทีม การตั้ง server กลางขึ้นมาสักตัวหนึ่งก็คงเป็นเรื่องที่ดีกว่า

แต่กับคนที่ไม่ต้องการจะทำเองก็มีผู้ให้บริการ VCS อยู่หลายเจ้าเหมือนกัน โดยที่ได้รับความนิยมก็มีดังนี้ครับ

โดยบริการเหล่าจะฟรีเมื่อโปรเจคของเราเป็น Open Source แต่เราสามารถเสียเงินซื้อบริการ (ในราคาไม่สูงมากนัก) ถ้าเราต้องการที่จะใช้กับโปรเจคที่ไม่ใช่ Open Source นอกจากนี้เว็บไซต์ดังกล่าวยังให้บริการอื่นนอกจาก VCS อีกด้วย

สุดท้ายนี้อยากแนะนำสักนิดว่า ถ้าเกิดว่าเรากำลังจะเริ่มต้นเขียนโค๊ดโปรแกรมอะไรสักอย่าง  ให้ใช้ VCS กับโปรเจคนั้นด้วยเสมอ แล้วงานจะราบรื่นขึ้นมากครับ

    ใส่ความเห็น

    อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

    This site uses Akismet to reduce spam. Learn how your comment data is processed.