การเปิดตัวระบบควบคุมแหล่งที่มาแบบกระจาย Git 2.26

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

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

  • ค่าเริ่มต้นถูกเปลี่ยนเป็น รุ่นที่สอง โปรโตคอลการสื่อสาร Git ซึ่งใช้เมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ Git จากระยะไกล เวอร์ชันที่สองของโปรโตคอลมีความโดดเด่นในด้านความสามารถในการกรองสาขาและแท็กบนฝั่งเซิร์ฟเวอร์ โดยส่งคืนรายการลิงก์แบบสั้นไปยังไคลเอนต์ ก่อนหน้านี้ คำสั่ง pull จะส่งรายการอ้างอิงทั้งหมดในที่เก็บทั้งหมดถึงไคลเอ็นต์เสมอ แม้ว่าไคลเอ็นต์จะอัปเดตเพียงสาขาเดียวหรือตรวจสอบว่าสำเนาของที่เก็บเป็นข้อมูลล่าสุดก็ตาม นวัตกรรมที่โดดเด่นอีกประการหนึ่งคือความสามารถในการเพิ่มความสามารถใหม่ให้กับโปรโตคอลเมื่อมีฟังก์ชันการทำงานใหม่ในชุดเครื่องมือ รหัสไคลเอนต์ยังคงเข้ากันได้กับโปรโตคอลเก่าและสามารถทำงานกับเซิร์ฟเวอร์ทั้งเก่าและใหม่ต่อไปได้ โดยจะถอยกลับไปเป็นเวอร์ชันแรกโดยอัตโนมัติหากเซิร์ฟเวอร์ไม่รองรับเซิร์ฟเวอร์ตัวที่สอง
  • เพิ่มตัวเลือก "-show-scope" ให้กับคำสั่ง "git config" แล้ว ทำให้ง่ายต่อการระบุตำแหน่งที่มีการกำหนดการตั้งค่าบางอย่าง Git ช่วยให้คุณสามารถกำหนดการตั้งค่าในตำแหน่งต่างๆ: ในที่เก็บ (.git/info/config) ในไดเร็กทอรีผู้ใช้ (~/.gitconfig) ในไฟล์การกำหนดค่าทั้งระบบ (/etc/gitconfig) และผ่านคำสั่ง ตัวเลือกบรรทัดและตัวแปรสภาพแวดล้อม เมื่อดำเนินการ "git config" เป็นการยากที่จะเข้าใจว่าการตั้งค่าที่ต้องการถูกกำหนดไว้ที่ไหน เพื่อแก้ไขปัญหานี้ ตัวเลือก "--show-origin" ใช้งานได้ แต่จะแสดงเฉพาะเส้นทางไปยังไฟล์ที่มีการกำหนดการตั้งค่าไว้ ซึ่งมีประโยชน์หากคุณต้องการแก้ไขไฟล์ แต่ไม่ได้ช่วยอะไรหากคุณ จำเป็นต้องเปลี่ยนค่าผ่าน "git config" โดยใช้ตัวเลือก "--system", "--global" หรือ "-local" ตัวเลือกใหม่ "--show-scope" จะแสดงบริบทคำจำกัดความของตัวแปรและสามารถใช้ร่วมกับ -show-origin:

    $ git --list --show-scope --show-origin
    ไฟล์โกลบอล:/home/user/.gitconfig diff.interhunkcontext=1
    ไฟล์โกลบอล:/home/user/.gitconfig push.default=current
    […] local file:.git/config branch.master.remote=origin
    ไฟล์ในเครื่อง:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    diff.statgraphwidth ทั่วโลก 35
    ท้องถิ่น diff.colormoved ธรรมดา

    $ git config --global --unset diff.statgraphwidth

  • ในการตั้งค่าการเข้าเล่ม ข้อมูลรับรอง อนุญาตให้ใช้มาสก์ใน URL การตั้งค่า HTTP และข้อมูลรับรองใน Git สามารถตั้งค่าได้ทั้งสำหรับการเชื่อมต่อทั้งหมด (http.extraHeader, credential.helper) และสำหรับการเชื่อมต่อที่ใช้ URL (credential.https://example.com.helper, credential.https: //example. com.ผู้ช่วย) จนถึงขณะนี้ ไวด์การ์ด เช่น *.example.com ได้รับอนุญาตสำหรับการตั้งค่า HTTP เท่านั้น แต่ไม่รองรับการผูกข้อมูลรับรอง ใน Git 2.26 ความแตกต่างเหล่านี้จะถูกกำจัดออกไป ตัวอย่างเช่น หากต้องการผูกชื่อผู้ใช้กับโดเมนย่อยทั้งหมด คุณสามารถระบุได้:

    [ข้อมูลรับรอง "https://*.example.com"]

    ชื่อผู้ใช้ = taylorr

  • การขยายการสนับสนุนการทดลองสำหรับการโคลนบางส่วน (โคลนบางส่วน) ยังคงดำเนินต่อไป ช่วยให้คุณสามารถถ่ายโอนข้อมูลเพียงบางส่วนและทำงานกับสำเนาของพื้นที่เก็บข้อมูลที่ไม่สมบูรณ์ รุ่นใหม่เพิ่มคำสั่งใหม่ "git sparse-checkout add" ซึ่งช่วยให้คุณสามารถเพิ่มไดเร็กทอรีแต่ละรายการเพื่อใช้การดำเนินการ "ชำระเงิน" กับเพียงส่วนหนึ่งของแผนผังการทำงาน แทนที่จะแสดงรายการไดเร็กทอรีดังกล่าวทั้งหมดในคราวเดียวผ่านคำสั่ง "git" ชุดการชำระเงินแบบกระจัดกระจาย" (คุณสามารถเพิ่มไดเร็กทอรีได้ทีละไดเร็กทอรี โดยไม่ต้องระบุรายการทั้งหมดซ้ำในแต่ละครั้ง)
    ตัวอย่างเช่น หากต้องการโคลนที่เก็บ git/git โดยไม่ต้องคอมมิต Blob การจำกัดการเช็คเอาท์เฉพาะไดเร็กทอรีรากของสำเนาที่ใช้งานได้ และการทำเครื่องหมายการเช็คเอาต์สำหรับไดเร็กทอรี "t" และ "Documentation" แยกต่างหาก คุณสามารถระบุ:

    $ git clone --filter=blob:none --sparse [ป้องกันอีเมล]:git/git.git

    $ ซีดีคอมไพล์
    $ git sparse-checkout init --cone

    $ git sparse-checkout เพิ่ม t
    ....
    $ git sparse-checkout เพิ่มเอกสารประกอบ
    ....
    $ git รายการชำระเงินแบบกระจัดกระจาย
    เอกสาร
    t

  • ประสิทธิภาพของคำสั่ง “git grep” ที่ใช้ในการค้นหาทั้งเนื้อหาปัจจุบันของที่เก็บและการแก้ไขประวัติได้รับการปรับปรุงอย่างมีนัยสำคัญ เพื่อเร่งการค้นหา เป็นไปได้ที่จะสแกนเนื้อหาของแผนผังการทำงานโดยใช้หลายเธรด (“git grep –threads”) แต่การค้นหาในการแก้ไขที่ผ่านมาเป็นแบบเธรดเดียว ขณะนี้ข้อจำกัดนี้ได้ถูกลบออกแล้วโดยการใช้ความสามารถในการดำเนินการอ่านแบบขนานจากที่เก็บข้อมูลอ็อบเจ็กต์ ตามค่าเริ่มต้น จำนวนเธรดจะถูกตั้งค่าเท่ากับจำนวนคอร์ CPU ซึ่งโดยส่วนใหญ่แล้วไม่จำเป็นต้องตั้งค่าตัวเลือก "-threads" อย่างชัดเจน
  • เพิ่มการสนับสนุนสำหรับการเติมข้อมูลอัตโนมัติของคำสั่งย่อย เส้นทาง ลิงก์ และอาร์กิวเมนต์อื่นๆ ของคำสั่ง "git worktree" ซึ่งช่วยให้คุณทำงานกับสำเนาการทำงานหลายชุดของพื้นที่เก็บข้อมูล
  • เพิ่มการรองรับสีสดใสที่มีลำดับหลีก ANSI ตัวอย่างเช่น ในการตั้งค่าสำหรับสีไฮไลต์ “git config –color” หรือ “git diff –color-moved” คุณสามารถระบุ “%C(brightblue)” ผ่านตัวเลือก “--format” สำหรับสีฟ้าสดใส
  • เพิ่มสคริปต์เวอร์ชันใหม่แล้ว fsmonitor-ยามโดยให้บูรณาการเข้ากับกลไก เฟซบุ๊ก วอทช์แมน เพื่อเร่งการติดตามการเปลี่ยนแปลงไฟล์และลักษณะที่ปรากฏของไฟล์ใหม่ หลังจากอัพเดต git แล้ว เพื่อแทนที่ ขอในพื้นที่เก็บข้อมูล
  • เพิ่มการเพิ่มประสิทธิภาพเพื่อเร่งความเร็วการโคลนบางส่วนเมื่อใช้บิตแมป
    (เครื่องจักรบิตแมป) เพื่อหลีกเลี่ยงการค้นหาวัตถุทั้งหมดโดยสมบูรณ์เมื่อกรองเอาต์พุต การตรวจสอบ blobs (—filter=blob:none และ —filter=blob:limit=n) ในระหว่างการโคลนบางส่วนได้ดำเนินการแล้ว
    เร็วขึ้นอย่างเห็นได้ชัด GitHub ประกาศแพตช์พร้อมการเพิ่มประสิทธิภาพเหล่านี้และการสนับสนุนการทดลองสำหรับการโคลนบางส่วน

  • คำสั่ง "git rebase" ถูกย้ายไปยังแบ็กเอนด์อื่น โดยใช้กลไกเริ่มต้น 'ผสาน' (ก่อนหน้านี้ใช้สำหรับ "rebase -i") แทน 'patch+apply' แบ็กเอนด์จะแตกต่างกันเล็กน้อย เช่น หลังจากดำเนินการต่อไปหลังจากแก้ไขข้อขัดแย้ง (git rebase --continue) แบ็กเอนด์ใหม่จะเสนอให้แก้ไขข้อความคอมมิต ในขณะที่อันเก่าเพียงแต่ใช้ข้อความเก่า หากต้องการเปลี่ยนกลับไปใช้พฤติกรรมแบบเก่า คุณสามารถใช้ตัวเลือก "--apply" หรือตั้งค่าตัวแปรการกำหนดค่า 'rebase.backend' เป็น 'apply'
  • ตัวอย่างของตัวจัดการสำหรับพารามิเตอร์การตรวจสอบสิทธิ์ที่ระบุผ่าน .netrc ได้รับการลดขนาดให้เป็นรูปแบบที่เหมาะสำหรับการใช้งานนอกกรอบ
  • เพิ่มการตั้งค่า gpg.minTrustLevel เพื่อกำหนดระดับความน่าเชื่อถือขั้นต่ำสำหรับองค์ประกอบต่างๆ ที่ทำการตรวจสอบลายเซ็นดิจิทัล
  • เพิ่มตัวเลือก "--pathspec-from-file" เป็น "git rm" และ "git stash"
  • การปรับปรุงชุดทดสอบยังคงดำเนินต่อไปเพื่อเตรียมการเปลี่ยนไปใช้อัลกอริธึมการแฮช SHA-2 แทน SHA-1

ที่มา: opennet.ru

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