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...

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ติดตั้ง Zigbee Dongle บน Synology NAS กับ Home Assistant

ก่อนหน้านี้เราเปลี่ยนมาใช้ Zigbee Dongle กับ Home Assistant พบว่าเสถียรขึ้นเยอะมาก อุปกรณ์แทบไม่หลุดออกจากระบบเลย แต่การติดตั้งมันเข้ากับ Synology DSM นั้นมีรายละเอียดมากกว่าอันอื่นนิดหน่อย วันนี้เราจะมาเล่าวิธีการเพื่อใครเอาไปทำกัน...

โหลด CSV วิธีไหนเร็วที่สุด ?

โหลด CSV วิธีไหนเร็วที่สุด ?

เมื่อหลายวันก่อนมีพี่ที่รู้จักกันมาถามว่า เราจะโหลด CSV ยังไงให้เร็วที่สุด เป็นคำถามที่ดูเหมือนง่ายนะ แต่พอมานั่งคิด ๆ ต่อ เห้ย มันมีอะไรสนุก ๆ ในนั้นเยอะเลยนี่หว่า วันนี้เราจะมาเล่าให้อ่านกันว่า มันมีวิธีการอย่างไรบ้าง และวิธีไหนเร็วที่สุด เหมาะกับงานแบบไหน...

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ฮาวทู Sync Obsidian Note ด้วย LiveSync Plugin

ตั้งแต่ใช้ Obsidian เป็น App จด Note หลัก ชอบวิธีการจัดการมาก ๆ เมื่อใช้งานร่วมกับ Plugin ต่าง ๆ ยิ่งทำให้การใช้งานยืดหยุ่นมากกว่าเดิมอีกเยอะมาก ๆ ติดอยู่เรื่องเดียวคือ การใช้งานในหลาย ๆ อุปกรณ์ แต่เราเจอ Plugin ตัวนึงที่น่าสนใจมาก ๆ คือ LiveSync วันนี้เราจะมาเล่าวิธีการติดตั้ง และใช้งานมันกัน...

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

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

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