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

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

เมื่อเทียบกับรุ่นก่อนหน้า มีการเปลี่ยนแปลง 717 รายการในเวอร์ชันใหม่ โดยเตรียมการมีส่วนร่วมของนักพัฒนา 96 ราย โดยในจำนวนนี้ 26 รายมีส่วนร่วมในการพัฒนาเป็นครั้งแรก นวัตกรรมหลัก:

  • คำสั่ง “git log” และ “git show” มีตัวเลือก “—remerge-diff” ที่ให้คุณแสดงความแตกต่างระหว่างผลลัพธ์โดยรวมของการผสานและข้อมูลจริงที่สะท้อนในการคอมมิตหลังจากประมวลผลคำสั่ง “merge” ซึ่งช่วยให้คุณประเมินการเปลี่ยนแปลงที่เกิดขึ้นอันเป็นผลจากการแก้ไขข้อขัดแย้งในการควบรวมกิจการได้อย่างชัดเจน คำสั่ง "git show" ปกติจะเยื้องการแก้ไขข้อขัดแย้งต่างๆ ทำให้เข้าใจการเปลี่ยนแปลงได้ยาก ตัวอย่างเช่น ในภาพหน้าจอด้านล่างบรรทัด “+/-” ที่ไม่มีการเยื้อง แสดงการแก้ไขล่าสุดของข้อขัดแย้งที่เกี่ยวข้องกับการเปลี่ยนชื่อ sha1 เป็น oid ในความคิดเห็นในสาขาแรก และ “+/-” พร้อมการเยื้องแสดงการเริ่มต้น การแก้ไขข้อขัดแย้งที่เกิดจากการปรากฏตัวของอาร์กิวเมนต์เพิ่มเติมในสาขาที่สองในฟังก์ชัน dwim_ref()
    Git 2.36 ซอร์สคอนโทรลรีลีส

    เมื่อใช้ตัวเลือก "--remerge-diff" ความแตกต่างระหว่างการแก้ไขข้อขัดแย้งจะไม่ถูกแยกออกจากสาขาหลักแต่ละสาขา แต่จะแสดงความแตกต่างโดยรวมระหว่างไฟล์ที่มีข้อขัดแย้งที่ผสานและไฟล์ที่มีการแก้ไขข้อขัดแย้งแล้ว

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

  • เพิ่มความยืดหยุ่นในการกำหนดค่าลักษณะการทำงานสำหรับการล้างแคชของดิสก์ผ่านการเรียกไปยังฟังก์ชัน fsync() พารามิเตอร์ core.fsyncObjectFiles ที่มีอยู่ก่อนหน้านี้ได้ถูกแบ่งออกเป็นตัวแปรการกำหนดค่าสองตัว core.fsync และ core.fsyncMethod ทำให้สามารถใช้ fsync ไม่เพียงแต่กับไฟล์อ็อบเจ็กต์ (.git/objects) เท่านั้น แต่ยังรวมถึงโครงสร้าง git อื่นๆ ด้วย เช่น ลิงก์ ( .git /refs) ไฟล์ reflog และแพ็ค

    เมื่อใช้ตัวแปร core.fsync คุณสามารถระบุรายการโครงสร้าง Git ภายในที่ fsync จะถูกเรียกเพิ่มเติมหลังจากการดำเนินการเขียน ตัวแปร core.fsyncMethod ช่วยให้คุณสามารถเลือกวิธีการล้างแคชได้ ตัวอย่างเช่น คุณสามารถเลือก fsync เพื่อใช้การเรียกระบบที่มีชื่อเดียวกัน หรือระบุการเขียนออกอย่างเดียวเพื่อใช้การเขียนกลับแคชเพจ

  • เพื่อป้องกันช่องโหว่ที่จัดการการแทนที่ไดเร็กทอรี .git ของผู้ใช้รายอื่นในส่วนที่ใช้ร่วมกัน การตรวจสอบเจ้าของพื้นที่เก็บข้อมูลจึงมีความเข้มงวดมากขึ้น ขณะนี้การดำเนินการคำสั่ง git ใด ๆ ได้รับอนุญาตเฉพาะในไดเร็กทอรี ".git" ของตนเองเท่านั้น หากไดเร็กทอรีที่มีที่เก็บเป็นของผู้ใช้รายอื่น ข้อผิดพลาดจะแสดงตามค่าเริ่มต้น ลักษณะการทำงานนี้สามารถปิดใช้งานได้โดยใช้การตั้งค่า safe.directory
  • คำสั่ง “git cat-file” มีไว้สำหรับส่งออกเนื้อหาต้นฉบับของออบเจ็กต์ Git ได้รับการเสริมด้วยตัวเลือก “—batch-command” ซึ่งเติมเต็มคำสั่ง “—batch” และ “—batch-check” ที่มีอยู่ก่อนหน้านี้ด้วย ความสามารถในการปรับเปลี่ยนประเภทเอาต์พุตโดยใช้ “เนื้อหา <วัตถุ>" เพื่อแสดงเนื้อหาหรือ "ข้อมูล <วัตถุ>" เพื่อแสดงข้อมูลเกี่ยวกับวัตถุ นอกจากนี้ ยังรองรับคำสั่ง "flush" เพื่อล้างบัฟเฟอร์เอาต์พุต
  • สำหรับคำสั่ง “git ls-tree” ซึ่งมีไว้สำหรับสร้างรายการเนื้อหาของแผนผังวัตถุ ตัวเลือก “—oid-only” (“—object-only”) ได้ถูกเพิ่มเข้าไป ซึ่งคล้ายกับ “—name-only” ” ซึ่งแสดงเฉพาะตัวระบุวัตถุเพื่อทำให้การโทรจากสคริปต์ง่ายขึ้น นอกจากนี้ ยังมีการใช้ตัวเลือก “--format” ซึ่งช่วยให้คุณกำหนดรูปแบบเอาต์พุตของคุณเองโดยการรวมข้อมูลเกี่ยวกับโหมด ประเภท ชื่อ และขนาด
  • คำสั่ง “git bisect run” ใช้การตรวจจับว่าไม่ได้ตั้งค่าแฟล็กไฟล์ปฏิบัติการสำหรับสคริปต์ และในกรณีนี้จะแสดงข้อผิดพลาดด้วยรหัส 126 หรือ 127 (ก่อนหน้านี้ หากไม่สามารถรันสคริปต์ได้ การแก้ไขทั้งหมดจะถูกทำเครื่องหมายว่ามีปัญหา) .
  • เพิ่มตัวเลือก --refetch ให้กับคำสั่ง "git fetch" เพื่อดึงข้อมูลออบเจ็กต์ทั้งหมดโดยไม่ต้องแจ้งให้อีกฝ่ายทราบเกี่ยวกับเนื้อหาที่มีอยู่ในระบบโลคัลแล้ว ลักษณะการทำงานนี้อาจมีประโยชน์สำหรับการกู้คืนจากความล้มเหลวเมื่อความสมบูรณ์ของข้อมูลในเครื่องไม่แน่นอน
  • คำสั่ง "git update-index", "git checkout-index", "git read-tree" และ "git clean" ขณะนี้รองรับดัชนีบางส่วน (ดัชนีแบบกระจาย) เพื่อปรับปรุงประสิทธิภาพและประหยัดพื้นที่ในคลังเก็บข้อมูลที่มีการดำเนินการบางส่วน การโคลนนิ่ง (ชำระเงินกระจัดกระจาย)
  • พฤติกรรมของคำสั่ง “git clone —filter=… —recurse-submodules” มีการเปลี่ยนแปลง ซึ่งขณะนี้นำไปสู่การโคลนโมดูลย่อยบางส่วน (ก่อนหน้านี้ เมื่อดำเนินการคำสั่งดังกล่าว ตัวกรองจะถูกนำไปใช้กับเนื้อหาหลักเท่านั้น และโมดูลย่อยถูก โคลนอย่างสมบูรณ์โดยไม่คำนึงถึงตัวกรอง)
  • คำสั่ง "git Bundle" ได้เพิ่มการรองรับสำหรับการระบุตัวกรองสำหรับการเลือกวางเนื้อหา คล้ายกับการดำเนินการโคลนบางส่วน
  • เพิ่มตัวเลือก "--recurse-submodules" ให้กับคำสั่ง "git Branch" เพื่อสำรวจโมดูลย่อยแบบวนซ้ำ
  • Userdiff เสนอตัวจัดการใหม่สำหรับภาษา Kotlin

ที่มา: opennet.ru

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