ไมโครซอฟท์เปิดตัวระบบไฟล์เสมือน GVFS (Git Virtual File System) ใช้เก็บข้อมูลในระบบ Git โดยเฉพาะ เพื่อให้ Git มีประสิทธิภาพมากขึ้นสำหรับเก็บซอร์สโค้ดขนาดใหญ่มากๆ
ไมโครซอฟท์อธิบายว่า Git ไม่ได้ถูกออกแบบมาให้เก็บไฟล์จำนวนมาก (ตัวอย่างคือซอร์สโค้ดของ Windows มีขนาด 270GB และจำนวนไฟล์ 3.5 ล้านไฟล์) เวลาทำงานกับไฟล์จำนวนมากๆ บางคำสั่งอย่าง git checkout หรือ git status ที่ต้องทำงานกับไฟล์ทั้งหมด ต้องใช้เวลานานเป็นหลายชั่วโมงกว่าจะเสร็จ
แต่ในทางปฏิบัติแล้ว การมี repo ใหญ่ขนาดนี้ไม่มีใครสั่งคอมไพล์ซอร์สโค้ดทั้งหมดอยู่แล้ว ใน repo ขนาด 3 ล้านไฟล์ อาจมีไฟล์ที่เราต้องใช้งานจริงๆ เพียงแค่ 50,000-100,000 ไฟล์เท่านั้น เราไม่ควรต้องรอนานขนาดนั้น

GVFS จึงถูกออกแบบมาให้เป็นระบบไฟล์เสมือน (virtual file system) ที่อยู่ใต้ชั้นของ repo อีกที เพื่อให้ดูเหมือนว่า repo ของเราดาวน์โหลดไฟล์มาครบทั้งหมดแล้ว (fully hydrated repo) แต่ในความเป็นจริง ไฟล์จะถูกดาวน์โหลดมาใช้งานตอนถูกเรียกใช้ครั้งแรกแทน ประสิทธิภาพในการใช้งานจึงดีขึ้น ลดระยะเวลาจากหลักหลายชั่วโมงมาเหลือหลักนาที-วินาทีเท่านั้น
ข้อดีอีกอย่างของ GVFS คือมันทำงานในระดับที่อยู่ใต้ Git อีกที ดังนั้นเครื่องมือต่างๆ ที่เรียกใช้งาน Git จึงไม่ต้องปรับแต่งแก้ไขใดๆ เพราะมองไม่เห็นชั้นของ GVFS นั่นเอง
ตอนนี้ GVFS ยังอยู่ระหว่างการพัฒนา แต่เปิดซอร์สโค้ดแล้วบน GitHub และยังจำเป็นต้องใช้กับ Git for Windows เวอร์ชันของไมโครซอฟท์ที่ดัดแปลงให้ทำงานร่วมกับ GVFS ได้
ที่มา - MSDN
on
โอ้ว Windows 200 กว่ากิ๊ก
jaideejung007 Sun, 05/02/2017 - 07:31
โอ้ว Windows 200 กว่ากิ๊ก เพิ่งรู้เลย
อยากรู้ว่าใช้จริงๆ กี่ไฟล์
icez Sun, 05/02/2017 - 08:23
In reply to โอ้ว Windows 200 กว่ากิ๊ก by jaideejung007
อยากรู้ว่าใช้จริงๆ กี่ไฟล์
กี่คนที่มีโอกาสเข้าถึงซอร์สโค
maxmin Sun, 05/02/2017 - 09:04
กี่คนที่มีโอกาสเข้าถึงซอร์สโค้ดพวกนั้น
เจอโค้ด 50+ ล้านบรรทัดของ
grit Sun, 05/02/2017 - 19:15
เจอโค้ด 50+ ล้านบรรทัดของ Windows 270GB เข้าไป
รอมแอนดรอยด์ 20GB (โค้ด 10+ ล้านบรรทัด) กลายเป็นเรื่องจิ๊บๆ ไปเลย
นึกถึงตอนคอมไพล์รอมแอนดรอยด์
จริงๆ Windows มีหลาย version
McKay Sun, 05/02/2017 - 19:41
In reply to เจอโค้ด 50+ ล้านบรรทัดของ by grit
จริงๆ Windows มีหลาย version นะครับ แถมพัฒนามานาน dependency/module หลายๆตัวก็น่าจะ deprec'd ไปบ้างแล้ว
Gabe Aul [MSFT]:
คือ scale มันใหญ่หว่า Android แน่ๆอยู่แล้วครับ แต่ผมสงสัยเหมือนคุณ icez นะว่าใช้จริงๆเท่าไหร่
โอ้ อย่างนี้นี่เอง ขอบคุณมากๆ
grit Mon, 06/02/2017 - 05:44
In reply to จริงๆ Windows มีหลาย version by McKay
โอ้ อย่างนี้นี่เอง ขอบคุณมากๆ ครับ ผมดันไปทึกทักเอาเองว่าหมายถึงตัว Windows อย่างเดียว เลยเทียบจำนวนบรรทัดโค้ดกับ Windows version ที่ผ่านๆ มา (50+ ล้าน) เลยรู้สึกว่าอัตราส่วนขนาดต่อจำนวนบรรทัดโค้ดมันต่างจากแอนดรอยด์เกินไป อย่างนี้ถ้ารวมๆ ทั้งหมดแล้วจำนวนบรรทัดโค้ด 100+ ล้าน ก็แปลว่ายังอยู่ในอัตราส่วนใกล้เคียงกันกับแอนดรอยด์ จะได้เก็บเป็นข้อมูลว่าขนาดต่อจำนวนบรรทัดโค้ดปกติมันน่าจะอยู่ที่ประมาณนี้
แต่ที่สงสัยคือ 20GB ~ 20ล้านKB ~ 10+ ล้าน lines of code ~ 2+KB per 1 line of code
หรือ 270GB ~ 270ล้านKB ~ (90-135) ล้าน lines of code ~ 2-3KB per 1 line of code
ทำไมอัตราส่วนมันถึงอยู่หลัก KB ต่อ 1 บรรทัดโค้ด
คือต่อให้คำนึงถึง cluster size มันก็ไม่น่าจะมีกรณีที่เป็นไปได้
แปลว่าต้องมีบางอย่างที่พลาดไปหรือยังไม่เคยรู้มาก่อน
git repository มันไม่ได้มีแต่
McKay Mon, 06/02/2017 - 09:11
In reply to โอ้ อย่างนี้นี่เอง ขอบคุณมากๆ by grit
git repository มันไม่ได้มีแต่ current version source code นี่ครับ ตัว git เองก็เป็น VCS โดยตรงอยู่แล้ว นอกจากนี้ตัว repository เองมันยังเก็บอย่างอื่นที่ไม่ใช่ source code+history ไว้อีกด้วย เช่นไฟล์รูปภาพต่างๆ ดังนั้นจะเอาขนาดไปเทียบกับจำนวนบรรทัดโดยตรงไม่ได้ครับ
เริ่มพอเห็นภาพแล้วครับ
grit Tue, 07/02/2017 - 04:16
In reply to git repository มันไม่ได้มีแต่ by McKay
เริ่มพอเห็นภาพแล้วครับ คือมันต้องมี diff ของแต่ละ version ยิ่งมี version history เยอะก็ยิ่งมีขนาดมากขึ้น ไหนจะข้อมูลอื่นๆ ของแต่ละ version อย่าง md5 อะไรอย่างนี้อีกใช่ไหมครับ ส่วนเรื่องไฟล์รูปภาพนี่ผมไม่ได้นึกถึงเลย นึกว่ามีแต่โค้ดล้วนๆ ขอบคุณมากๆ ครับที่ให้ความรู้