แปลตามตัวกันเลยทีเดียวมันก็แปลว่า ตัวควบคุมเวอชั่น คือตัวที่จะคอยตรวจสอบว่าในแต่ละครั้งซอสร์สโค้ดมันมีอะไรเปลี่ยนแปลงไปบ้าง แล้วเก็บความเปลี่ยนแปลงนั้นไว้ ตั้งเป็น version ตามด้วยตัวเลขที่เพิ่มขึ้นไปเรื่อยๆ เหมือนกับการที่เราเซฟโค้ดไว้เป็นก้อปปี้ๆนั่นแหละ แต่ version control มันมีระบบการทำงานภายในที่เจ๋งกว่าแค่การก้อปปี้ข้อมูลไว้เป็นช่วงๆ มันยังบันทึกไว้ด้วยใครเป็นคนเขียนโค้ดบรรทัดไหน เวลาเมื่อไร เป็นต้น
ถ้าจะถามว่า แล้วทำไมเราต้องสนใจใช้มัน ตอบได้ว่า ก็มันดีไง มันทำแบ้กอัพให้เราเอง ถ้าเราทำอะไรผิดขึ้นมา เราสามารถจะย้อนมันกลับไปตอนที่ยังทำงานได้ดีๆ อย่างสบายๆ
ผมเล่าประวัติการเดินทางของ version control ดีกว่าแล้วท่านก็สรุปเอาเองละกันว่าทำไมจึงต้องสนใจใช้ Version Control มาเป็นเครื่องมือร่วมในการพัฒนาโปรแกรม
ย้อนหลังไปนานหลายปีในอดีตกาล ในสมัยที่เป็นยุคเริ่มต้นของโปรแกรมมิ่ง เมื่อโปรแกรมมอร์เขียนโปรแกรมไปๆ แล้วรู้สึกหวั่นๆว่าโค้ดของตัวเอง อาจจะพังด้วยน้ำมือตัวเองขึ้นมาสักครั้ง ในช่วงระหว่างกำลังพัฒนา เขาเลยก้อปปี้โค้ดทั้งโฟลเดอร์ เปลี่ยนชื่อทำเป็นแบ็กอัพไว้ อาจจะตั้งเป็นวันเดือนปี เพราะมันระบุได้ดีว่าแบ้กอัพไว้ตั้งแต่เมื่อไร (แต่พอนานๆไปก็ลืม ว่าไอ้ที่อยู่ในโฟลเดอร์ มันทำงานได้ขนาดไหน) ถ้าคนขี้กลัวมากก็จะทำแบ้กอัพไว้บ่อยหน่อย ทำให้พื้นที่ในฮาร์ดดิสก์หายไปเรื่อยๆ มันน่าแปลกใจที่ว่าโปรแกรมเมอร์ทั่วโลกมันช่างมีวิสัยทัศน์ที่ตรงกันเด๊ะ พี่ไทยเราชอบมากวิธีนี้
แต่กระนั้นก็ตาม เมื่อต้องการทราบว่าไอ้โฟลเดอร์ที่แบ็กอัพไว้เนี่ย แต่ละอันมันต่างกันยังไง กลับไม่สามารถบอกได้ เพราะเห็นแต่ชื่อโฟลเดอร์มันไม่ได้สื่อขี้เกลืออะไรเลย ข้างในก็ไม่รู้มีอะไรบ้างแล้วจำไม่ได้ สุดท้ายมันก็ไม่มีประโยชน์อะไร กลายเป็นขยะรกฮาร์ดดิสก์ไปเท่านั้น อีกอย่างในตอนกำลังพัฒนาถ้าเซฟไฟล์ไปแล้ว การจะย้อนไปที่โค้ดที่มันยังดีๆอยู่เมื่อวาน มันเป็นเรื่องเสียเวลาและลำบากไม่น้อยทีเดียว ดีไม่ดีอาจจะต้องเขียนใหม่ นี่แค่มองในภาพการพัฒนาโปรแกรมแบบตัวคนเดียวนะ ถ้าหลายคนละ มึ้ง เสียเวลาคอด
ต่อมาโปรแกรมเมอร์ระดับพระกาฬคนหนึ่ง เห็นว่าไอ้ปัญหาที่เห็นๆกันอยู่ทุกวันนั้น มันสามารถแก้ได้ด้วยการใช้โปรแกรมสักตัวมาควบคุม เขาก็เลยเขียนโปรแกรมแบบที่เขาต้องการขึ้นมาคอยเก็บการเปลี่ยนแปลงของซอร์สโค้ดไว้ในฐานข้อมูล เป็นครั้งๆไปที่โปรแกรมเมอร์สั่งให้มันเก็บ ปัญหาเรื่องเก็บข้อมูลเป็นโฟลเดอร์ก้อปปี้ ก็หายไป ชีวิตการพัฒนาโปรแกรมของโปรแกรมเมอร์ดีขึ้นมาก ปวดหัวน้อยลงเมื่อทำอะไรพลาดไป ตรงนี้แหละเป็นกำเนิดของระบบ CVS
ผ่านไปเนิ่นนาน ปัญหาใหม่ก็เกิดขึ้นถ้าเมื่อฐานข้อมูลของระบบ CVS เกิดพังขึ้นมา หรือ ฮาร์ดดิสก์พังขึ้นมา history ที่โปรแกรมควบคุมมันเก็บไว้ก็หายไปพร้อมชีวิตฮาร์ดดิสก์ โปรแกรมเมอร์ระดับพระกาฬอีกคนหนึ่ง ก็มองว่าถ้าอย่างนั้นทำไมเราไม่เขียนโปรแกรมขึ้นมาสักตัวหนึ่งเก็บไว้ที่เซิฟเวอร์เลย ซอร์สโค้ดทั้งหมดจะถูกส่งไปเก็บไว้ที่เซิฟเวอร์ และการเปลี่ยนแปลงของโค้ดทั้งหมด ตัวโปรแกรมตัวนี้จะคอยจัดการ และต้องมีโปรแกรมทางไคลเอนท์อีกสักตัวคอยรวบรวมส่งโค้ดมา ตรงนี้แหละเป็นกำเนิดของระบบ SVN (ผมเขียนไว้ให้ท่านได้ใช้งานกันแล้วที่ http://www.select2web.com/category/svn )
ผ่านไปอีกระยะหนึ่ง มันก็เกิดปัญหาอีกว่า ไอ้เซิฟเวอร์ที่เก็บตัวควบคุมซอร์สโค้ดนั้นมันก็มีโอกาสพังได้เหมือนกัน ไอ้ที่เก็บๆไว้ก็มีโอกาสเจ๊งอีกแล้ว โปรแกรมเมอร์ระดับเทพอีกคนหนึ่ง ก็คิดต่อว่าถ้าอย่างนั้นจะแก้ปัญหานี้อย่างไรดีล่ะ ก็คิดได้ว่า ถ้าอย่างนั้นก็เก็บแม่งไว้ทั้งที่เซิฟเวอร์และที่เครื่องไคลเอนท์เลยละกัน (เขาเรียกการคิดแบบนี้ว่า การเก็บและประมวลผลแบบกระจาย) มันไม่มีทางจะเจ๊งพร้อมกันทีเดียวหลายเครื่องได้หรอก ตรงนี้แหละเป็นกำเนิดของระบบ Git (ป๋าไลนัส ทอวัล ผู้สร้างลีนุก แกเป็นคนสร้างขึ้นมาไอ้ระบบ Git เนี่ย) (ผมเขียนไว้ให้ท่านได้ใช้งาน Git กันแล้วเหมือนกันที่ http://www.select2web.com/php/github-and-netbean-1.html)
แล้วกาลเวลาก็เดินทางจนมาถึงปัจจุบัน
แต่ละระบบที่กล่าวมาทั้ง 3 มีโปรแกรมของหลายๆค่ายให้ใช้งาน แต่ CVS เดี๋ยวนี้เขาไม่ค่อยใช้กันแล้วครับ ยังเหลือแต่ SVN กับ Git ที่ยังได้รับความนิยม ไอ้ที่ผมเล่าประวัติมานั้นน่ะ มันแค่คร่าวๆนะ ในแต่ละช่วงมันยังมีปัญหาในการพัฒนาร่วมกันอีกเยอะแยะ เขาก็คิดวิธีแก้กันไป จนมันเกิด Trunk, Branch, Tag (ไว้จะเล่าให้ฟังพรุ่งนี้) ขึ้นมาในระบบ SVN และ Git
หลังจากนี้ไปก็ขึ้นอยู่กับการตัดสินใจของตัวท่านเองแล้วล่ะว่า ท่านจะจัดการกับซอร์สของตัวเองยังไง จะแบ็กอัพด้วยวิธีควายๆแบบโบราณ ก็ไม่ได้มีใครว่า (ถ้าไม่เสียดายเวลาและเซลล์สมองของตัวเอง) หรือ จะเลือกใช้ Version Control อย่างโปรแกรมเมอร์ผู้เจริญแล้วเขาใช้กัน ถึงเขียนโปรแกรมอยู่คนเดียวก็ควรจะใช้เชื่อเถอะ แล้วท่านจะไม่กลับไปใช้วิธีจัดการซอร์สโค้ดของตัวเองด้วยวิธีควายๆ อีกเลย
ขอความกระจ่างแจ้งในวิญญาณจงเกิดแก่ท่าน
Mandmod Modlove says:
16/01/2556 at 16/01/2556
ขอบคุณมากครับ
เอก says:
04/06/2557 at 04/06/2557
สุดยอดเลยพี่ เขียนบทความได้อร่อยมาก 555