วันพุธที่ 6 กันยายน พ.ศ. 2560

Basic Git part 1

Version Control System

มาสรุปของสิ่งที่เราอ่านกันวันนี้นิดหน่อยนะครับ Git นั่นเอง มันเป็นหนึ่งใน version control ที่ได้รับความนิยมอย่างสูง เชื่อว่าหลายคนที่ต้องทำงานโปรเจ็กต์คงได้ลองบ้างแล้ว และที่อาจไม่เคยลองเลยก็คงเป็นน้องๆที่ยังไม่เคยจับโปรเจ็กต์เลยนั่นเอง (อันนี้เดา)

เป็นเรื่องของการจัดเก็บไฟล์ครับ ไม่ว่าจะเป็นเอกสาร .doc, .docx, .png, .java, .py, ไฟล์อะไรก็เก็บได้หมด ประเด็นคือเก็บไว้ทำไม?

เก็บเพื่อจะย้อนดูประวัติการใช้งานไฟล์เหล่านั้น ตั้งแต่วันเวลาที่สร้างมันขึ้น การเปลี่ยนแปลงแก้ไขใดๆก็ตาม แม้แต่ตัวอักษรเดียวก็รู้ว่าเกิดการแก้ไขตรงจุดไหนอย่างไร ทำไปทำไม?

ทำไปเพราะว่าไฟล์เหล่านั้นมีคุณค่า มีมูลค่า ไม่ว่าจะแง่ของธุรกิจหรือแค่ความต้องการส่วนตัว อาจเริ่มต้นด้วยการเก็บไฟล์ไว้ในเครื่องตัวเองก่อน เขาก็เรียกว่า local version control systems

แต่ local version control systems มันแชร์ชาวบ้านลำบาก เออ ถ้าจะมาพัฒนาโปรแกรมร่วมกัน จะให้ copy ส่งกันก็กระไรอยู่ ดังนั้น upgrade ขึ้นไปอีกเป็น centralized version control systems

centralized version control systems จะมี server เป็นตัวกลางคอยเก็บไฟล์ไว้ให้ update กันที่นี่ อยากได้ก็มาดูดเอา ทำนองนี้ ประเด็นคือ ถ้า server ล้ม ทุกอย่างแทบจะวินาศไปเลยเทียว ดังนั้นพัฒนาขึ้นมาอีก เป็น distributed version control systems

distributed version control systems นี้ดีมาก คือมัน copy สิ่งที่แชร์กันบน server ไปไว้เครื่องตัวเองก่อน เรียกว่า local repository ดังนั้น แม้นว่า server ล้มไปแล้ว ก็สามารถกูไฟล์ทั้งหมดคืนได้ แจ่มโพด

และ git ก็คือหนึ่งในยี่ห้อดังที่ใช้หลักการ distributed version control systems ครับผม

ตอนนี้ผมกลับมาอ่านเรื่อง git สิ่งที่ผมจะแนะนำเพื่อนๆให้ทำความเข้าใจร่วมกันก็คือ สถานะของ git ซึ่งประกอบไปด้วย 3 สถานะ ได้แก่

1. git directory
2. working directory
และ 3. ที่ทำให้ git พิเศษกว่า version control system ตัวอื่นก็คือ staging area

***หมายเหตุ ภาพทั้งหมดที่จะนำมาประกอบบทความนี้ขอยกผลประโยชน์อันพึงได้ทั้งหมดแก่
https://git-scm.com/book/en/v2

จริงๆที่เขาแปลไทยก็ดีนะครับ แต่ผมอ่านแล้วยังงงๆเลยไปขออ่านเวอร์ชัน en เทียบกัน ก็เข้าใจดีขึ้น

ก่อนที่จะกลับมาเรื่องสถานะ อุ้ย ดึกแล้ว ต้องดูก่อนว่าการเก็บไฟล์แบบ snapshots ของ git ดีกว่า version control system ตัวอื่นอย่างไร โดยส่วนตัวคิดว่าเรื่องนี้ลึกเกินไป แต่ก็ต้องทราบเอาไว้บ้าง เขาว่าปกติแล้ว vcs (version control system) แบบอื่นจะเก็บไฟล์ต้นฉบับและผลต่างที่เกิดจากการแก้ไขไฟล์เหล่านั้นเอาไว้ เขาใช้คำว่า set of files ที่เกิดการเปลี่ยนแปลง (เกิดการแก้ไข) ในแต่ละช่วงเวลา โดยเรียกแต่ละช่วงเวลาว่า version

***หมายเหตุ ภาพนี้นำมาจาก
https://www.blognone.com/node/78730

ดังนั้นการย้อนเวลาในแต่ละ version (ไว้จะอธิบายทีหลังว่าทำไมต้องย้อนเวลา) ของ vcs ที่ไม่ใช่ git เราก็จะเห็นเพียงส่วนต่างที่บันทึกเอาไว้เท่านั้นเอง อะพอแล้ว ฝันดีครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น