Praneat Blog

Yosapol Jitrak
Game Developer & Game Infrastructure
29 Aug 2017

ทำไมต้องรู้จักกับ Version Control

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

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

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


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

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

ที่ยกมานี้แค่ทำคนเดียวนะครับ
เพราะคนอื่นส่ง Asset พวก Sprite, Texture, 3D มารวมที่ผมหมด
ผ่าน Thumbdrive นั้นแหละ

แล้วถ้าทำงานกับคนอื่นล่ะ
ที่มันต้องรวมงานกันไป รวมงานกันมา
อันนี้ขอไม่เล่า เพราะมันจะยาว และเฉพาะทางเกินไป

เขาก็เลยมี Version Control System ออกมาแก้ปัญหาที่กล่าวมาข้างต้นได้ทั้งหมด
ผมอาจจะเล่าปัญหาต่าง ๆ ไม่ครบนะครับ
อันนี้แค่ประสบการณ์ส่วนตัวอย่างเดียว


Version Control เนีย มันมีอะไรที่แจ่ม ๆ น่าสนใจบ้าง

  • เก็บ Version เป็นประวัติ
    • สามารถดูทุกรายละเอียดของเปลี่ยนแปลงไปได้ ในแต่ล่ะ Version
    • ชื่อไฟล์ใช้ชื่อเดียวได้ทุก Version ไม่ต้องตั้ง File1, File2, File3 อีกต่อไป
  • ย้อน Version กลับได้
    • ย้อน Version กลับได้ทั้ง Project หรือสามารถเลือกไฟล์ที่ต้องการจะย้อนก็ได้
  • การสำรองข้อมูล
    • สามารถสำรองข้อมูลบน Server ได้
      ไอ้เจ้า Version Control ก็ดันมีหลายเจ้าซะเหลือเกิน
      แต่ตอนนั้นปี 2014 Git มาแรง แซงทางโค้งหมด

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

ที่มันได้รับความนิยมขนาดนี้ เพราะว่าน่าจะมาจากเหตุผลที่ว่า
โครงการ Open source นั้นใช้ GitHub เสียเป็นส่วนใหญ่
ชื่อมันก็บอกอยู่แล้วเนอะว่า Git เพราะฉะนั้นมันก็ต้องใช้ Git แน่นอนอยู่แล้ว

โครงการ Open source นั้นคืออะไร ผมขอยกหน้าที่นี้ให้กับ Google
เพราะประเด็นหลักเราคือ Version Control System (VCS)

สรุปแล้วมันสามารถแก้ปัญหาที่ผมเจอมาตลอด
ตั้งแต่มัธยม มหาวิทยาลัย จนถึงตอนทำงาน

ไม่ว่าจะเป็นเรื่อง ไฟล์หาย, ไฟล์เสีย, การตั้งชื่อไฟล์, การย้อน Version, การรวมงานกับคนอื่น
เจ้า Git เนีย มันตอบโจทย์ทุกอย่างจริง ๆ

เพราะฉะนั้น ใครที่เป็น Programmer หรือ 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://blog.sourcetreeapp.com/files/2013/02/st_win8_beta.png

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

บทความนี้เป็นบทความแรกที่เขียนเกี่ยวกับสายงานของผม
ก่อนหน้านี้เคยเขียนบทความเกี่ยวกับเกมมาก่อนบ้างเล็กน้อยเพียงเท่านั้น
อาจจะตกหล่น เขียนเนื้อสำคัญไม่ครบ ก็ขออภัยด้วยครับ