Git 2.35 ซอร์สคอนโทรลรีลีส

หลังจากสองเดือนของการพัฒนา Git 2.35 ระบบควบคุมแหล่งที่มาแบบกระจายก็ได้รับการเผยแพร่แล้ว Git เป็นหนึ่งในระบบควบคุมเวอร์ชันที่ได้รับความนิยม เชื่อถือได้ และมีประสิทธิภาพสูง โดยมอบเครื่องมือการพัฒนาแบบไม่เชิงเส้นที่ยืดหยุ่นตามการแยกสาขาและการรวมเข้าด้วยกัน เพื่อให้มั่นใจถึงความสมบูรณ์ของประวัติและการต่อต้านการเปลี่ยนแปลงย้อนหลัง จึงมีการใช้การแฮชโดยนัยของประวัติก่อนหน้าทั้งหมดในการคอมมิตแต่ละครั้ง นอกจากนี้ยังสามารถรับรองแต่ละแท็กและคอมมิตด้วยลายเซ็นดิจิทัลของนักพัฒนาได้อีกด้วย

เมื่อเทียบกับรุ่นก่อนหน้า เวอร์ชันใหม่มีการเปลี่ยนแปลง 494 รายการ ซึ่งเตรียมโดยการมีส่วนร่วมของนักพัฒนา 93 คน โดย 35 คนมีส่วนร่วมในการพัฒนาเป็นครั้งแรก นวัตกรรมหลัก:

  • ความเป็นไปได้ในการใช้คีย์ SSH เพื่อเซ็นชื่อออบเจ็กต์ Git แบบดิจิทัลได้รับการขยายออกไป เพื่อจำกัดระยะเวลาที่ใช้งานได้ของหลายคีย์ จึงได้เพิ่มการรองรับคำสั่ง OpenSSH “ใช้ได้ก่อน” และ “ใช้ได้หลัง” ซึ่งคุณสามารถรับประกันการทำงานที่ถูกต้องด้วยลายเซ็นหลังจากที่นักพัฒนาคนใดคนหนึ่งหมุนเวียนคีย์แล้ว ก่อนหน้านี้มีปัญหากับการแยกลายเซ็นด้วยคีย์เก่าและใหม่ - หากคุณลบคีย์เก่าจะไม่สามารถตรวจสอบลายเซ็นที่สร้างด้วยคีย์นั้นได้ และหากคุณปล่อยทิ้งไว้ก็จะยังคงอยู่ได้ สร้างลายเซ็นใหม่ด้วยคีย์เก่าซึ่งถูกแทนที่ด้วยคีย์อื่นแล้ว การใช้ valid-before และ valid-after คุณสามารถแยกขอบเขตของคีย์ตามเวลาที่สร้างลายเซ็นได้
  • ในการตั้งค่า merge.conflictStyle ซึ่งช่วยให้คุณสามารถเลือกโหมดสำหรับการแสดงข้อมูลเกี่ยวกับข้อขัดแย้งระหว่างการผสาน การสนับสนุนสำหรับโหมด "zdiff3" ได้ปรากฏขึ้น ซึ่งจะย้ายบรรทัดมาตรฐานทั้งหมดที่ระบุไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของข้อขัดแย้งไปนอกข้อขัดแย้ง ซึ่งทำให้การนำเสนอข้อมูลมีขนาดกะทัดรัดยิ่งขึ้น
  • เพิ่มโหมด “--staged” ลงในคำสั่ง “git stash” แล้ว ซึ่งช่วยให้คุณซ่อนเฉพาะการเปลี่ยนแปลงที่เพิ่มในดัชนีได้ เช่น ในสถานการณ์ที่คุณจำเป็นต้องเลื่อนการเปลี่ยนแปลงที่ซับซ้อนบางส่วนชั่วคราวเพื่อเลื่อนไปก่อน เพิ่มสิ่งที่พร้อมแล้วและจัดการกับส่วนที่เหลือหลังจากนั้นไม่นาน โหมดนี้คล้ายกับคำสั่ง “git commit” โดยเขียนเฉพาะการเปลี่ยนแปลงที่อยู่ในดัชนี แต่แทนที่จะสร้างการคอมมิตใหม่ใน “git stash —staged” ผลลัพธ์จะถูกจัดเก็บไว้ในพื้นที่ชั่วคราวที่ซ่อน เมื่อจำเป็นต้องเปลี่ยนแปลง คุณสามารถเปลี่ยนกลับได้ด้วยคำสั่ง "git stash pop"
  • มีการเพิ่มตัวระบุรูปแบบใหม่ลงในคำสั่ง "git log" ซึ่งก็คือ "--format=%(describe)" ซึ่งช่วยให้คุณสามารถรวมเอาต์พุตของ "git log" เข้ากับเอาต์พุตของคำสั่ง "git อธิบาย" ได้ พารามิเตอร์สำหรับ "git อธิบาย" ระบุไว้โดยตรงภายในตัวระบุ ("-format=%(describe:match= ,ไม่รวม= )") ซึ่งคุณยังสามารถใส่แท็กแบบย่อได้ ("-format=%(describe:tags= )") และกำหนดค่าจำนวนอักขระฐานสิบหกเพื่อระบุวัตถุ (“—format=%(describe:abbrev= )"). ตัวอย่างเช่น ในการแสดงรายการ 8 คอมมิตสุดท้ายที่แท็กไม่มีแท็กตัวเลือก release และระบุตัวระบุ 8 อักขระ คุณสามารถใช้คำสั่ง: $ git log -8 —format='%(describe:exclude=*-rc *,ตัวย่อ=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642-gb 56bd95 bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640- gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • ขณะนี้การตั้งค่า user.signingKey รองรับคีย์ประเภทใหม่ที่ไม่จำกัดเฉพาะประเภท “ssh-” และระบุเส้นทางไฟล์แบบเต็มไปยังคีย์ ประเภททางเลือกจะถูกระบุโดยใช้คำนำหน้า "key::" เช่น "key::ecdsa-sha2-nistp256" สำหรับคีย์ ECDSA
  • ความเร็วของการสร้างรายการการเปลี่ยนแปลงในโหมด “—ฮิสโตแกรม” รวมถึงเมื่อใช้ตัวเลือก “—สีที่ย้าย-ws” ซึ่งควบคุมการเน้นช่องว่างในส่วนต่างของสี ได้รับการเพิ่มขึ้นอย่างเห็นได้ชัด
  • คำสั่ง "git jump" ใช้เพื่อให้ข้อมูล Vim เกี่ยวกับการข้ามไปยังตำแหน่งที่ต้องการในไฟล์เมื่อแยกวิเคราะห์ข้อขัดแย้งในการผสาน การดูความแตกต่าง หรือการดำเนินการค้นหา ช่วยให้สามารถจำกัดข้อขัดแย้งในการผสานที่ครอบคลุมให้แคบลง ตัวอย่างเช่น หากต้องการจำกัดการดำเนินการไว้ที่ไดเร็กทอรี "foo" เท่านั้น คุณสามารถระบุ "git jump Merge - foo" และเพื่อแยกไดเร็กทอรี "Documentation" ออกจากการประมวลผล - "git jump Merge - ':^Documentation'"
  • งานได้ดำเนินการเพื่อสร้างมาตรฐานการใช้ประเภท "size_t" แทน "unsigned long" สำหรับค่าที่แสดงขนาดของวัตถุ ซึ่งทำให้สามารถใช้ตัวกรอง "clean" และ "smudge" กับไฟล์ที่มีขนาดใหญ่กว่า 4 GB ในทุกแพลตฟอร์ม รวมถึงแพลตฟอร์มที่มีโมเดลข้อมูล LLP64 ประเภท “unsigned long” ซึ่งจำกัดไว้ที่ 4 ไบต์
  • เพิ่มตัวเลือก “-empty=(stop|drop|keep)” ลงในคำสั่ง “git am” ซึ่งช่วยให้คุณสามารถเลือกลักษณะการทำงานของข้อความว่างที่ไม่มีแพตช์เมื่อแยกวิเคราะห์แพตช์จากกล่องจดหมาย ค่า “stop” จะยุติการดำเนินการแพตช์ทั้งหมด “drop” จะข้ามแพตช์ว่าง และ “keep” จะสร้างคอมมิตว่าง
  • เพิ่มการรองรับดัชนีบางส่วน (ดัชนีแบบกระจาย) ให้กับคำสั่ง "git Reset", "git diff", "git Blame", "git fetch", "git pull" และ "git ls-files" เพื่อปรับปรุงประสิทธิภาพและประหยัดพื้นที่ใน ที่เก็บ ซึ่งดำเนินการโคลนบางส่วน (ชำระเงินแบบกระจัดกระจาย)
  • คำสั่ง "git sparse-checkout init" เลิกใช้แล้ว และควรแทนที่ด้วย "git sparse-checkout set"
  • เพิ่มการใช้งานครั้งแรกของแบ็กเอนด์ "reftable" ใหม่สำหรับจัดเก็บข้อมูลอ้างอิง เช่น สาขาและแท็กในพื้นที่เก็บข้อมูล แบ็กเอนด์ใหม่ใช้พื้นที่เก็บข้อมูลแบบบล็อกที่ใช้โดยโครงการ JGit และได้รับการปรับให้เหมาะสมสำหรับการจัดเก็บการอ้างอิงจำนวนมาก แบ็กเอนด์ยังไม่ได้รวมเข้ากับระบบการอ้างอิง และไม่พร้อมสำหรับการใช้งานจริง
  • จานสีของคำสั่ง "git grep" ได้รับการปรับให้ตรงกับยูทิลิตี้ GNU grep

ที่มา: opennet.ru

เพิ่มความคิดเห็น