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

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

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

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

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

จัดการ Docker Container ง่าย ๆ ด้วย Portainer

การใช้ Docker CLI ในการจัดการ Container เป็นท่าที่เราใช้งานกันทั่วไป มันมีความยุ่งยาก และผิดพลาดได้ง่ายยังไม่นับว่ามี Instance หลายตัว ทำให้เราต้องค่อย ๆ SSH เข้าไปทำทีละตัว มันจะดีกว่ามั้ย หากเรามี Centralised Container Managment ที่มี Web GUI ให้เราด้วย วันนี้เราจะพาไปทำความรู้จักกับ Portainer กัน...

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

Host Website จากบ้านด้วย Cloudflare Tunnel ใน 10 นาที

ปกติหากเราต้องการจะเปิดเว็บสักเว็บ เราจำเป็นต้องมี Web Server ตั้งอยู่ที่ไหนสักที่หนึ่ง ต้องใช้ค่าใช้จ่าย พร้อมกับต้องจัดการเรื่องความปลอดภัยอีก วันนี้เราจะมาแนะนำวิธีการที่ง่ายแสนง่าย ปลอดภัย และฟรี กับ Cloudflare Tunnel ให้อ่านกัน...

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

จัดการข้อมูลบน Pandas ยังไงให้เร็ว 1000x ด้วย Vectorisation

เวลาเราทำงานกับข้อมูลอย่าง Pandas DataFrame หนึ่งในงานที่เราเขียนลงไปให้มันทำคือ การ Apply Function เข้าไป ถ้าข้อมูลมีขนาดเล็ก มันไม่มีปัญหาเท่าไหร่ แต่ถ้าข้อมูลของเราใหญ่ มันอีกเรื่องเลย ถ้าเราจะเขียนให้เร็วที่สุด เราจะทำได้โดยวิธีใดบ้าง วันนี้เรามาดูกัน...