มีอะไรใหม่ใน Git 2.52: คำสั่ง ประสิทธิภาพ และความปลอดภัย

  • คำสั่งใหม่: git last-modified, git repo และการเพิ่ม git refs สำหรับการดำเนินการทั่วไป
  • การบำรุงรักษาที่ได้รับการปรับปรุง: งานทางเรขาคณิตในการบำรุงรักษา Git และการเพิ่มประสิทธิภาพการทำงานหลายประการ
  • ความปลอดภัยกำลังดำเนินอยู่: ขั้นตอนแรกสู่การทำงานร่วมกันของ SHA-1/SHA-256 และการเปลี่ยนแปลงเริ่มต้นเป็น "หลัก" ในรุ่นหลักถัดไป
  • ยูทิลิตี้เพิ่มเติม: การปรับปรุงฟิลเตอร์ Bloom การทำความสะอาดแบบเบาบางและคุณสมบัติใหม่ใน commit-graph, stash และ diff-tree

คอมไพล์ 2.52

Git 2.52 วางจำหน่ายแล้ว เป็นการอัปเดตที่เสถียรสำหรับระบบควบคุมเวอร์ชันแบบกระจายยอดนิยมนี้ เวอร์ชันนี้มาพร้อมกับ คุณสมบัติใหม่ การปรับปรุงการบำรุงรักษา และการปรับปรุงประสิทธิภาพ ผลงานจากผู้ร่วมงานกว่า 94 ราย โดย 33 รายเข้าร่วมโครงการเป็นครั้งแรก

การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ คำสั่งย่อยใหม่สำหรับการสำรวจคลังข้อมูล เวิร์กโฟลว์การบำรุงรักษาที่ชาญฉลาดยิ่งขึ้น และความคืบหน้าในการเปลี่ยนผ่านสู่ SHA-256 ทั้งหมดนี้มาพร้อมกับแนวทางที่สอดคล้องและเรียบง่าย ด้วย แนวทางปฏิบัติ ที่จัดการที่เก็บข้อมูลขนาดแตกต่างกัน

คำสั่ง git 2.52 ใหม่สำหรับการสำรวจที่เก็บข้อมูล

ความแปลกใหม่ที่โดดเด่นที่สุดคือ git last-modifiedออกแบบมาเพื่อรับข้อมูล commit ล่าสุดที่เชื่อมโยงกับแต่ละเส้นทางอย่างมีประสิทธิภาพ ในคลังข้อมูลที่มีรายการจำนวนมาก วิธีนี้จะช่วยหลีกเลี่ยงการวนซ้ำของประวัติ และสามารถ เร็วกว่าการเชื่อมโยง ls-tree + log หลายเท่าตามการทดสอบภายใน พบว่าลดเวลาจากวินาทีเหลือเพียงมิลลิวินาทีในสถานการณ์จริง

เครื่องยนต์ last-modified ได้รับการพัฒนาบน GitHub มาหลายปีภายใต้ชื่อ ต้นไม้แห่งการตำหนิป้อน "ความผิด" ระดับต้นไม้ให้กับพวกเขาตั้งแต่ปี 2012 ต่อมา วิศวกร GitLab พวกเขาขัดเกลาชุดแพตช์เพื่อรวมเข้ากับ Git 2.52 แม้ว่ายังมีฟีเจอร์ที่ต้องเพิ่ม เช่น รูปแบบดิสก์เพื่อแคชผลลัพธ์ จากการดำเนินการครั้งก่อน

ตัวทดลองก็มา git repoร่มสำหรับปรึกษาคุณลักษณะของคลังข้อมูล ด้วย git repo info คุณบอกได้ไหมว่ามันเป็น เปลือย o ตื้นรูปแบบของวัตถุและการอ้างอิงและด้วย git repo structure ถูกพิมพ์ออกมา สถิติเชิงโครงสร้าง (จำนวนการคอมมิท ต้นไม้ บล็อบ กิ่งก้าน แท็ก ฯลฯ) นอกจากนี้ info รวมตัวเลือกแบบย่อ -z และมีความสามารถ รายงานรูปแบบวัตถุ ใช้

สำหรับผู้ที่ทำงานในระดับต่ำที่มีการอ้างอิง git refs Suma git refs list (นามแฝงของ git for-each-ref) และ git refs exists (คล้ายกับ git show-ref --existsพวกเขาไม่ได้เสนอความสามารถที่ไม่เคยมีมาก่อน แต่ พวกเขามุ่งเน้นการดำเนินงานบ่อยครั้ง ของการอ้างอิงภายใต้คำสั่งเดียว

เล็กแต่มีประโยชน์: ตอนนี้ git cmd --help-all มันยังใช้งานได้ นอกพื้นที่เก็บข้อมูลทำให้สามารถเข้าถึงความช่วยเหลือระดับโลกได้อย่างง่ายดายโดยไม่จำเป็นต้องเริ่มต้นสิ่งใดๆ

การบำรุงรักษาและประสิทธิภาพการทำงาน

Git 2.52 แนะนำงาน geometric ภายใน git maintenance หลีกเลี่ยงการแพ็คซ้ำแบบ all-in-one ทุกครั้งที่ทำได้ และตัดวัตถุที่ไม่สามารถเข้าถึงได้ออกน้อยลง งานนี้ตรวจสอบแพ็กเกจเพื่อสร้าง ความก้าวหน้าทางเรขาคณิตตามจำนวนวัตถุ และบดอัดโดยไม่ต้องตัดแต่งกิ่งเมื่อเหมาะสม หากการดำเนินการจะจบลงด้วยการแพ็คเดี่ยว ให้ดำเนินการ git gc สมบูรณ์แบบสำหรับการรวบรวมและการตัดแต่งกิ่ง

ในด้านความเร็ว มีความก้าวหน้าที่วัดได้ดังนี้: git describe ตอนนี้ใช้คิวลำดับความสำคัญและได้รับประมาณ ผลตอบแทน 30%; git remote rename เพิ่มประสิทธิภาพการเปลี่ยนชื่ออ้างอิง git ls-files มันช่วยให้ดัชนีกระจายตัวมากขึ้นในกรณีต่างๆ git log -L หลีกเลี่ยงความแตกต่างในระดับต้นไม้บางส่วนในการผสาน เร่งการวิเคราะห์และไลบรารี xdiff มันรวมการเพิ่มประสิทธิภาพหลายอย่างที่ ความแตกต่างและการผสานได้รับการปรับปรุง ในระดับไฟล์

ความปลอดภัยและแผนงานสู่ Git 3.0

การเปลี่ยนผ่านจาก SHA-1 ไปเป็น SHA-256 ยังคงดำเนินต่อไป องค์ประกอบแรกของ SHA-256 ปรากฏในเวอร์ชัน 2.52 การทำงานร่วมกันระหว่างอัลกอริทึมเป้าหมายคือการอนุญาตให้คลังข้อมูลที่มีแฮชต่างกันสามารถแลกเปลี่ยนการเปลี่ยนแปลงได้อย่างราบรื่น แม้จะยังเป็นงานพื้นฐาน แต่ก็เป็นการปูทางไปสู่การเปิดตัวครั้งใหญ่ครั้งต่อไป

การเปลี่ยนแปลงอีกอย่างที่วางแผนไว้สำหรับ Git 3.0 คือ การกำหนดสาขาเริ่มต้นให้เรียกว่า "main" ซึ่งได้เพิ่มเข้ามาตั้งแต่เวอร์ชัน 2.52 เบาะแสและข้อความช่วยเหลือ เพื่ออำนวยความสะดวกในการเปลี่ยนแปลงนั้น และใครก็ตามที่ต้องการก้าวไปข้างหน้าสามารถรวบรวมด้วยธงได้ WITH_BREAKING_CHANGES เพื่อทดสอบพฤติกรรมที่วางแผนไว้

นอกจากนี้ยังรวมถึงรหัส Rust ที่ได้รับการป้องกันโดยตัวเลือก WITH_RUSTซึ่งใช้การเข้ารหัส/ถอดรหัสจำนวนเต็มความกว้างแปรผัน ในเวอร์ชันนี้ไม่จำเป็นต้องใช้ และ Git 2.52 ทำงานได้โดยไม่ต้องใช้คอมไพเลอร์ Rust แต่ คาดว่า Git 3.0 จะต้องใช้สิ่งนี้ และขยายส่วนที่เขียนใหม่

การปรับปรุงเวิร์กโฟลว์และการใช้งาน

การใช้ ฟิลเตอร์ Bloom แบบเปลี่ยนเส้นทางตัวกรองความน่าจะเป็นที่ช่วยเพิ่มความเร็วการเดินทางเมื่อจำกัดเส้นทางให้แคบลง ปัจจุบันมีการใช้ตัวกรองนี้แม้เมื่อ เส้นทางพิเศษ มันมี ไวด์การ์ดบางส่วน (ตัวอย่างเช่น foo/bar/*/baz) และในสถานการณ์ที่มีเส้นทางที่น่าสนใจหลายเส้นทาง จะเป็นประโยชน์ต่อการค้นหา เช่น last-modified และคำสั่งประวัติศาสตร์หลายรายการ

git sparse-checkout เพิ่มการดำเนินการ clean เพื่อแก้ไขกรณีที่เมื่อเปลี่ยนคำจำกัดความของพื้นที่ที่สนใจ ไฟล์จะถูกละเว้นจากการเลือก ด้วยขั้นตอนเดียว คุณก็ทำได้ ทำความสะอาดต้นไม้ทำงาน ขององค์ประกอบที่ไม่ต้องการ

ส่วนเพิ่มเติมที่มีประโยชน์อื่น ๆ : ตัวแปรใหม่ commitGraph.changedPaths เพื่อเปิดใช้งานตามค่าเริ่มต้น --changed-paths en git commit-graph; ตัวเลือก stash.index เพื่ออะไร git stash pop/apply ทำตัวเหมือนถูกเรียกด้วย --index; git diff-tree ได้รับ --max-depth; git fast-import Ahora จัดการฉลากที่ลงนาม; และ git repo info เรียนรู้การรายงานรูปแบบวัตถุนอกเหนือจากการรองรับ -z.

ความพร้อมใช้งานของ Git 2.52

สามารถดาวน์โหลดซอร์สโค้ดสำหรับ Git 2.52 ได้จาก เว็บไซต์อย่างเป็นทางการ เพื่อคอมไพล์ไว้ในเครื่อง น่าจะมาถึงในอีกไม่กี่วันหรือสัปดาห์ข้างหน้า ที่เก็บข้อมูลของการแจกจ่ายหลัก GNU/Linux ในยุโรป (Debian, Ubuntu, Fedora, openSUSE, Arch ฯลฯ) มีตัวจัดการเช่น Homebrew, MacPorts หรือ Chocolatey แล้ว โดยมีเวลาการแพ็คเกจตามปกติ

ด้วยการเปิดตัวครั้งนี้ Git เสริมความแข็งแกร่งให้กับการดำเนินงานประจำวันด้วย คำสั่งที่เร็วขึ้นและมีประโยชน์มากขึ้นขณะนี้ รูทีนการบำรุงรักษาที่กระชับขึ้นและองค์ประกอบพื้นฐานเบื้องต้นของการเปลี่ยนผ่านสู่ SHA-256 อยู่ใน "main" เป็นสาขาเริ่มต้น ผู้ที่อัปเกรดสามารถทดสอบได้แล้ว git last-modifiedใหม่ git repoงานทางเรขาคณิตของ git maintenance และการปรับแต่งที่เหลือซึ่งจะช่วยปรับปรุงประสบการณ์การใช้งานในที่เก็บข้อมูลขนาดเล็กและขนาดใหญ่โดยไม่ส่งเสียงใดๆ

ตัวแทน GitLab Duo
บทความที่เกี่ยวข้อง:
แพลตฟอร์ม GitLab Duo Agent: ยุคใหม่ของความร่วมมือ DevSecOps กับตัวแทน AI