Git นั้นเป็น version control system ที่ได้รับความนิยมอย่างมากในหลายๆองค์กร แต่ยังไม่สามารถทำงานได้ดีนักในองค์กรที่มีซอฟต์แวร์ขนาดใหญ่มากอย่างระบบปฏิบัติการ Windows ทีมนักพัฒนาจากไมโครซอฟต์จึงสร้าง Git Virtual File System (GVFS) ระบบ Git ที่สามารถทำงานกับ repository ขนาดใหญ่ได้อย่างมีประสิทธิภาพ ซึ่งได้มีการใช้งานจริงกับโค้ดของระบบปฏิบัติการ Windows แล้ว
เดิมนั้นโค้ดของ Windows ถูกเก็บอยู่ในระบบ source control ภายในของไมโครซอฟต์ที่เรียกว่า Source Depot แม้จะมีความต้องการในการย้ายไปเป็นระบบ Git แต่การลงมือทำจริงนั้นก็เป็นไปได้ยากเนื่องจากมีค่าใช้จ่ายที่สูงและ Git นั้นไม่สามารถสเกลขึ้นเพื่อรองรับซอฟต์แวร์ขนาดที่ใหญ่มากได้
เมื่อ check in ลงไปใน Git ระบบปฏิบัติการ windows จะมีโค้ดรวมที่ประมาณ 3.5 ล้านไฟล์ คิดรวมเป็นกว่า 300GB ซึ่ง repository นี้มีวิศวกรใช้งานอยู่ราว 3000 คน และมีการ build วันละ 1760 ครั้ง ใน 440 branch ทีมงานไมโครซอฟต์จึงต้องเผชิญหน้ากับความท้าทายใน 3 แง่มุม ทั้งจำนวนไฟล์ ขนาดของโค้ด และกิจกรรมที่เกิดขึ้นใน repository ในแต่ละวัน
GVFS ถูกพัฒนาขึ้นมาแก้ไขปัญหาตรงนี้ด้วยการทำคำสั่งกับไฟล์เฉพาะที่จำเป็นเท่านั้นโดยดูจากไฟล์ที่นักพัฒนาแต่ละคนได้ทำการแก้ไข และมีระบบสำหรับจัดการการ checkout เพียงบางไฟล์ (sparse checkout) ทำให้การ เรียก status หรือการ checkout เองทำงานได้อย่างรวดเร็ว
ในระยะเวลา 3 เดือนที่ผ่านมา ทางทีมงานก็ได้ค่อยๆปล่อย GVFS นี้ให้วิศวกรใช้งานกันในโค้ดของระบบปฏิบัติการ Windows แล้ว โดยมีการ commit เกิดขึ้นใน repository นี้มากกว่า 250,000 ครั้งใน 3 เดือน push เฉลี่ยวันละ 8421 ครั้ง ซึ่งตัวระบบก็สามารถทำงานได้อย่างมีประสิทธิภาพ และเมื่อเทียบกับการใช้ Git ธรรมดาที่อาจใช้เวลาในการทำคำสั่งตามตารางด้านล่างมากกว่า 30 นาทีใน repository ขนาดใหญ่แล้ว ถือว่าทำงานได้รวดเร็วมาก
สำหรับปัญหาที่ประสบในการนำ GVFS เข้ามาใช้ในครั้งนี้ ก็มีตั้งแต่ระบบการจัดการการ merge และ resolve conflict ดั้งเดิมที่ไม่เหมาะสมกับการใช้กับ conflict หลายพันรายการ ปัญหาหน้าการแสดงผลรายชื่อไฟล์จำนวนมากค้าง ซึ่งทีมงานก็ได้เร่งแก้ไขไปแล้ว
นอกจากนี้แล้ว ทีมนักพัฒนายังได้พัฒนา Git proxy สำหรับ GVFS เพื่อการส่งผ่านข้อมูลที่ดียิ่งขึ้นไปยังนักพัฒนาของไมโครซอฟต์ทั่วทุกมุมโลก proxy นี้จะคอยเก็บ cache ของไฟล์ไว้ที่ edge ต่างๆและคอยจัดการขนาดของ traffic ในบริการหลักของ Visual Studio Team Service เพื่อให้ผู้ใช้มีประสบการณ์ในการใช้งานที่ดี การใช้ proxy นี้ลดเวลาในการทำงานของระบบ Git ลงเป็นอย่างมาก เช่นการ clone จาก North Carolina นั้นอาจใช้เวลาถึง 25 นาที แต่เมื่อติดตั้ง proxy ก็ใช้เวลาเพียง 70 วินาทีเท่านั้น
GVFS เป็นโปรเจคโอเพ่นซอร์สที่องค์กรสามารถดาวน์โหลดไปทดลองใช้สำหรับ codebase ขนาดใหญ่กันได้ที่ https://github.com/Microsoft/GVFS
ที่มา: https://blogs.msdn.microsoft.com/bharry/2017/05/24/the-largest-git-repo-on-the-planet/