Jitrak Blog

วงแหวนเว็บ

Why to know Version Control System

September 26, 2020

บทความนี้เป็นการนำบทความที่เคยเขียนเมื่อหลายปีมาแล้ว มาทำการ Repost ใหม่

โดยส่วนตัวแล้ว ผมมองว่าเรื่อง Version Control System
เป็นสิ่งสำคัญที่ควรรู้อันดับต้น ๆ ของงานสาย Software Development เลยละ

หลายคนที่หลงเข้ามาอ่าน อาจจะเคยประสบปัญหา

  • ไฟล์งานเสีย
  • เซฟทับผิดไฟล์ งานหายเกลี้ยง
  • เผลอลบไฟล์ หรือ Folder ผิด แล้ว ล้าง Recycle Bin หรือ Trash ไปเรียบร้อยแล้ว
  • อยากเอางาน หรือไฟล์ อันก่อนหน้านี้กลับมา
  • แก้ไฟล์ ที่คิดว่าเสร็จเรียบร้อยแล้ว เลยตั้งชื่อมันว่า Final หรือ Lastest
    แต่กลับต้องแก้ไขเพิ่มเติมอีกไม่รู้กี่รอบ
    จนมันมีไฟล์กองใน Folder หน้าตา ประมาณแบบนี้ Final.psd, Final1.psd, Final2.psd, Lastest.psd, FinalLastest.psd
  • ปัญหาเวลารวมงานกับคนอื่น

    • ถือ Thumbdrive ไปเสียบกับอีกเครื่อง สมัยนี้ก็ผ่านช่องทาง Online ต่าง ๆ (เหมือนแก่)
    • ไม่รู้ว่าของใครมีอะไรใหม่กว่าบ้าง เวลารวมกันต้องคุยกันว่าทำอะไรไป
    • พอรวมกันเสร็จ ต้อง Copy กลับไปทับกับเครื่องที่เหลือ
    • บางอย่างต้องเลือกของใครสักคนนึงก่อน แล้วทำใหม่อีกรอบ ในส่วนที่เหลือ

ในสมัยยังเรียน และผมเพิ่งจบออกมาทำงานใหม่ ๆ
ผมเคยประสบปัญหา อยากเอางานก่อนหน้านี้กลับมา
ลบไปแล้วบ้าง อะไรบ้าง หรือเอาของเมื่อวานกลับมาดู
ไม่ว่าจะด้วยเหตุผลอะไรก็ตาม
ผมเลยใช้วิธีการ Backup งานไว้เป็น Savepoint ไว้เสมอ
ซึ่งแรก ๆ มันก็โอเคอยู่
แต่พอโปรเจคมันใหญ่ ไฟล์รูปมันเริ่มเยอะ
Copy ทีนึงก็ใช้เวลานาน แถมยังกินพื้นที่ Harddisk อีกต่างหาก

ปัญหาต่อมาคือไม่รู้แต่ล่ะ version ที่ทำไปมีรายละเอียดอะไรบ้าง เลยต้องทำไฟล์ Version เป็น Note กำกับไว้

Version Note

ที่ยกมานี้แค่ทำคนเดียวนะครับ
เพราะคนอื่นส่ง Asset พวก Sprite, Texture, 3D มารวมที่ผมหมด
ผ่าน Thumbdrive นั้นแหละ
แล้วถ้าทำงานกับคนอื่นล่ะ
ที่มันต้องรวมงานกันไป รวมงานกันมา
อันนี้ขอไม่เล่า เพราะมันจะยาว และเฉพาะทางเกินไป
เขาก็เลยมี Version Control System ออกมาแก้ปัญหาที่กล่าวมาข้างต้นได้ทั้งหมด
ผมอาจจะเล่าปัญหาต่าง ๆ ไม่ครบนะครับ
อันนี้แค่ประสบการณ์ส่วนตัวอย่างเดียว
Version Control เนีย มันมีอะไรที่แจ่ม ๆ น่าสนใจบ้าง

  • เก็บ Version เป็นประวัติ

    • สามารถดูทุกรายละเอียดของเปลี่ยนแปลงไปได้ ในแต่ล่ะ Version
    • ชื่อไฟล์ใช้ชื่อเดียวได้ทุก Version ไม่ต้องตั้ง File1, File2, File3 อีกต่อไป
  • ย้อน Version กลับได้

    • ย้อน Version กลับได้ทั้ง Project หรือสามารถเลือกไฟล์ที่ต้องการจะย้อนก็ได้
  • การสำรองข้อมูล

    • สามารถสำรองข้อมูลบน Server ได้

ไอ้เจ้า Version Control ก็ดันมีหลายเจ้าซะเหลือเกิน

แต่ตอนนั้นปี 2014 Git มาแรง แซงทางโค้งหมด

Version Control Systems used by Developers Credit: https://rhodecode.com/insights/version-control-systems-2016

ตอนนั้นผมก็เลยตัดสินใจเลือกใช้เจ้า Git ที่ว่านั้นแหละ
Git ข้าเลือกเจ้า
ซึ่งผมก็เลือกไม่ผิด เพราะปัจจุบันเป็น Number One เป็นที่เรียบร้อยแล้ว
อันอื่นมันก็มีข้อดีของมันนะ แต่ผมไม่เคยใช้

ที่มันได้รับความนิยมขนาดนี้ เพราะว่าน่าจะมาจากเหตุผลที่ว่า
โครงการ Open source นั้นใช้ GitHub เสียเป็นส่วนใหญ่
ชื่อมันก็บอกอยู่แล้วเนอะว่า Git เพราะฉะนั้นมันก็ต้องใช้ Git แน่นอนอยู่แล้ว
โครงการ Open source นั้นคืออะไร ผมขอยกหน้าที่นี้ให้กับ Google
เพราะประเด็นหลักเราคือ Version Control System (VCS)
สรุปแล้วมันสามารถแก้ปัญหาที่ผมเจอมาตลอด
ตั้งแต่มัธยม มหาวิทยาลัย จนถึงตอนทำงาน
ไม่ว่าจะเป็นเรื่อง ไฟล์หาย, ไฟล์เสีย, การตั้งชื่อไฟล์, การย้อน Version, การรวมงานกับคนอื่น
เจ้า Git เนีย มันแก้ปัญหาทุกอย่างที่ว่ามาได้จริง ๆ
เพราะฉะนั้น ใครที่เป็น Software Developer
แล้วยังไม่ได้ใช้ Version Control System หรือ VCS เนีย
ก็ไปหัดใช้ซะเหอะ ชีวิตจะได้สบายขึ้น
มีทั้งแบบ Command-line และ GUI ให้เลือกใช้ได้ตามสบายใจ

แบบ Command line
Credit: http://jr0cket.co.uk/2013/01/git-log-makes-multiple-repos-easier-to.html.html

แบบ GUI
Credit: http://shankarjdelphi.blogspot.com/2019/01/set-external-diff-tool-on-sourcetree.html

และก็ไม่จำเป็นต้องเป็น Programmer หรือ Software Developer อย่างเดียวที่ใช้ได้นะ
ใช้กับงานอื่น ๆ ก็ได้ที่ต้องการทำเรื่อง Version แบบนี้ หรือจะเอาไว้เป็น Backup ก็ได้นะ

อาจจะเขียนเนื้อสำคัญไม่ครบ ก็ขออภัยด้วยครับ


Written by Yosapol Jitrak, Who is interested in game development, FinTech, technology, agile and DevOps culture. Follow me on Facebook