Tutorial

[Dev Tip] Version Control มันคืออะไร ? แล้วมันดียังไง ?

By Arnon Puitrakul - 27 มิถุนายน 2015

[Dev Tip] Version Control มันคืออะไร ? แล้วมันดียังไง ?

Version Control มันคืออะไร ?

มาถึงก็เข้าเรื่องเลย จริง ๆ แล้วตัว Version Control มันก็แปลตามชื่อมันเลย มันคือตัวควบคุมเวอร์ชั่น มันทำหน้าที่ตรวจสอบว่า แต่ล่ะครั้งที่เราเปลี่ยนแปลง Source Code ของเรา อะไรมันเปลี่ยนไปบ้าง (Snapshot) แล้วเก็บความเปลี่ยนแปลงนั้น แล้วตั้งเป็น Version ไปเรื่อย ๆ คล้าย ๆ กับเรากด Save แล้ว Copy ไปไว้ที่อื่นเหมือนที่เมื่อก่อนเราทำกันนี่แหละ
ย้อนไปเมื่อตอนที่พวกเรายังเขียนโปรแกรมกันใหม่ ๆ อยู่ พวกเรารู้ว่า Code พลาดบรรทัดเดียว เปลี่ยนชีวิตเราได้เลย เพราะฉะนั้น อารมณ์เหมือน เราจะได้ตายด้วยน้ำมือตัวเองเข้าสักวัน วิธีแก้ของเราเมื่อก่อนก็คือ จับ Copy ไปที่อื่นซะเลย เราก็ทำแบบนี้ไปเรื่อย ๆ แต่พอเราทำไปเรื่อย ๆ นี่แหละ เราก็อาจจะลืมว่า ตรงที่เรา Copy ไว้ตอนนั้นเราเขียนถึงตรงไหนแล้ว เราแก้อะไรไปบ้างหว่า
หลังจากที่เรา Backup ไว้เยอะ ๆ เข้าชื่อ Folder อาจจะมีแค่ วันที่ หรืออะไรก็ตาม แต่มันก็บอกไม่ได้ว่าข้างในมันมีอะไรบ้าง (ลำพังแค่จะจำตัวโครงสร้างของตัวโปรแกรมที่เราออกแบบเองยังไม่ได้เลย) มันก็ไม่ต่างอะไรกับขยะที่รกอยู่ใน HDD เราเลย ต่อมาเลยมีโปรแกรมเมอร์คนนึงก็เห็นปัญหานี้ และบอกว่า ก็สร้างโปรแกรมมาควบคุมซะสิ เขาเลยเขียนโปรแกรมที่คอยเก็บการเปลี่ยนแปลงของ Source Code ลงใน DB ซึ่งนั่นก็ทำให้ชีวิตของโปรแกรมเมอร์สมัยนั้นดีขึ้นเยอะมาก ๆ
แต่ ๆ อุบัติเหตุก็เกิดขึ้นได้เสมอ เมื่อ HDD ที่ใช้เก็บ CVS พัง ทำให้ตัว Source Code และ History หายวับไปกับตา น้ำตาซึม กรี๊ดร้อง กันเลยทีเดียว จากนั้นก็มีโปรแกรมเมอร์หัวใสอีกคนบอกว่า งั้นก็เก็บมันไว้ทั้ง Server และ Client มันเลยล่ะกัน มันคงไม่พังพร้อม ๆ กันหมดทีเดียวหรอก นี่เลยเป็นจุดเริ่มต้นของ Git ที่เราใช้กันอยู่ถึงทุกวันนี้
ซึ่งแน่นอนว่า ในปัจจุบันนี้ Version Control ที่ส่วนใหญ่จะใช้กันนั่นก็คือ Git เพราะว่าตัว Source Code จะถูกเก็บทั้งที่ Client และ Server ทำให้ปลอดภัยมากขึ้น ลดความเสี่ยงที่ตัว Source Code จะหายไปเพราะอุบัติเหตุ

ที่เล่า ๆ มามันดียังไงเนี่ย ?

อย่างที่บอกว่า พวก Version Control มันจะคอยเก็บการเปลี่ยนแปลงของ Source Code เราเอาไว้ ถ้าสมมุติว่า เราเกิดแก้ Source Code อยู่แล้วมันเกิด เจ๊ง ขึ้นมา เราก็สามารถ Restore กลับไปตอนที่ยังไม่พังได้ด้วย
กับอีกเหตุผลนึง ถ้าเราทำงานเป็นทีม แล้วตัว Version Control มันจะช่วยทำให้เราทำงานกับทีมได้ง่ายขึ้น มันสามารถบอกว่าได้ว่า ตรงนี้ถูกเปลี่ยนแล้วนะ ใครเป็นคนแก้ แก้เมื่อไหร่ แล้วแก้เพื่ออะไร ตัว Source Code ก็จะถูก Sync กับตัว Server ตลอดเวลา ทำให้มั่นใจได้ว่า Source Code ที่เราทำงานอยู่เป็น Version ล่าสุดแน่นอน
สุดท้ายนี้ก็ขึ้นอยู่กับว่า เราจะจัดการกับ Source Code ของเรายังไง จะ Copy ไปที่อื่นเรื่อย ๆ เปลือง HDD ก็ไม่มีใครว่า หรือจะเลือกใช้ Version Control ดั่งโปรแกรมเมอร์ที่เจริญแล้วก็ได้เหมือนกัน ก็ไม่มีใครว่าอีกเช่นกัน

Read Next...

การสร้าง SSD Storage Pool บน Synology DSM

การสร้าง SSD Storage Pool บน Synology DSM

สำหรับคนที่ใช้ Synology NAS บางรุ่นจะมีช่อง M.2 สำหรับเสียบ NVMe SSD โดยพื้นฐาน Synology บอกว่ามันสำหรับการทำ Cache แต่ถ้าเราต้องการเอามันมาทำเป็น Storage ละ มันจะทำได้มั้ย วันนี้เราจะมาเล่าวิธีการทำกัน...

Multiprogramming, Multiprocessing และ Multithreading

Multiprogramming, Multiprocessing และ Multithreading

หลังจากที่เรามาเล่าเรื่อง malloc() มีคนอยากให้มาเล่าเรื่อง pthread เพื่อให้สามารถยัด Content ที่ละเอียด และเข้าใจง่ายในเวลาที่ไม่นานเกินไป เลยจะมาเล่าพื้นฐานที่สำคัญของคำ 3 คำคือ Multiprogramming, Multitasking, Multiprocessing และ Multithreading...

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

Synology NAS และ SSD Cache จำเป็นจริง ๆ เหรอ เหมาะกับระบบแบบใด

ใน Synology NAS มีความสามารถนึงที่น่าสนใจคือ การใช้ SSD เป็น Cache สำหรับระบบ ที่ทำให้ Performance ในการอ่านเขียน เร็วขึ้นกว่าเดิมมาก ๆ แน่นอนว่า เราลองละ วันนี้เราจะมาเล่าให้อ่านกันว่า หากใครคิดที่จะทำ มันเหมาะ หรือ ไม่เหมาะกับการใช้งานของเรา...

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

ฮาวทูย้าย Synology Add-on Package ไปอีก Volume

เรื่องราวเกิดจากการที่เราต้องย้าย Add-on Package ใน DSM และคิดว่าหลาย ๆ คนน่าจะต้องประสบเรื่องราวคล้าย ๆ กัน วันนี้เราจะมาเล่าวิธีการว่า เราทำยังไง เจอปัญหาอะไร และ แก้ปัญหาอย่างไรให้ได้อ่านกัน...