ฉันได้อ่านการสนทนาหลายครั้งที่นี่และเพื่อให้ที่เก็บ DVCS ใช้พื้นที่เท่ากันหรือน้อยกว่าที่เคาน์เตอร์ส่วนกลาง ฉันอาจจะพลาด แต่ฉันไม่พบคำอธิบายที่ดีว่าทำไมถึงเป็นเช่นนั้น ใครรู้บ้าง
ฉันได้อ่านการสนทนาหลายครั้งที่นี่และเพื่อให้ที่เก็บ DVCS ใช้พื้นที่เท่ากันหรือน้อยกว่าที่เคาน์เตอร์ส่วนกลาง ฉันอาจจะพลาด แต่ฉันไม่พบคำอธิบายที่ดีว่าทำไมถึงเป็นเช่นนั้น ใครรู้บ้าง
คำตอบ:
จากประสบการณ์ของฉันข้อความต่อไปนี้ล้วนเป็นความจริง:
หากคุณเปรียบเทียบตำแหน่งเช็คเอาต์ (ซึ่งเป็นที่เก็บในตัวเองกับ Git) เรื่องราวนั้นแตกต่างกันโดยสิ้นเชิง:
หากคุณเปรียบเทียบจำนวนไบต์ที่คุณต้องดาวน์หรืออัปโหลดมันจะแตกต่างกันอีกครั้ง
ดังนั้นในตอนท้ายคุณเปรียบเทียบแอปเปิ้ลกับส้มและขึ้นอยู่กับสิ่งที่คุณต้องการจะทำกับ Subversion หรือ Git ผลลัพธ์อาจแตกต่างกัน
@jk ถามถึงสำเนาที่สมบูรณ์หรือความแตกต่างแบบไบนารีและฉันไม่สามารถตอบคำถามนั้นได้ ฉันถามแมทธิวแมคคัลล็อกซึ่งให้การประชุมเชิงปฏิบัติการเรื่อง Git เมื่อเร็ว ๆ นี้ที่ Jax 2012 (ซึ่งฉันไปเยี่ยม) เขาใช้เวลา (ขอบคุณมากกับเขา) เพื่ออธิบายรายละเอียดเกี่ยวกับการทำงานภายในของ Git ใช่แล้วมีการบีบอัดที่ทำงานอยู่ที่นั่น (และฉันจะทำการทดสอบกับไฟล์ Microsoft Office เช่นกันและจะเปรียบเทียบกับส่วนสำคัญของเขา) แต่ไม่มีการบีบอัดจะทำกับไฟล์ทั้งหมด อ้างจากส่วนสำคัญของเขา:
วัตถุที่หลวมจะถูกเขียนในรูปแบบการบีบอัด แต่ไม่ใช่รูปแบบเดลต้าในแต่ละครั้งที่ส่งข้อมูล
git gc
หรือรวบรวมวัตถุหลวมมากเกินไปพบว่าผู้สมัครที่ดีที่จะบีบอัดเดลต้ากับพวกเขา (คอมไพล์สามารถแตกต่างจากรุ่นก่อนหน้า) เก็บเดลตาใน "แพ็ค" และลบวัตถุหลวม