Түгээмэл эх сурвалжийн хяналтын систем Git 2.48 гарсан. Git нь өндөр бүтээмжтэй бөгөөд салбарлах, нэгтгэх үндсэн дээр шугаман бус хөгжүүлэлтийн хэрэгслээр хангадаг. Түүхийн бүрэн бүтэн байдал, буцаан өөрчлөлтийг эсэргүүцэхийн тулд амлалт тус бүр дэх өмнөх түүхийг бүхэлд нь далд хэшлэх, мөн тус тусын шошго, амлалтуудыг хөгжүүлэгчдийн дижитал гарын үсгийг ашигладаг. Git кодыг GPLv2+ лицензийн дагуу түгээдэг.
Өмнөх хувилбартай харьцуулахад шинэ хувилбарт 605 хөгжүүлэгчийн оролцоотойгоор бэлтгэсэн 93 өөрчлөлт орсон бөгөөд үүнээс 35 нь анх удаа хөгжүүлэлтэд оролцож байна. Гол инноваци:
- GNU Make, CMake-аас гадна Meson build системийг ашиглан бүтээх чадварыг хэрэгжүүлсэн. Git-г бүтээхийн тулд та одоо "meson setup build && ninja -C build" командыг ашиглаж болно. GNU Make-г ашиглах үед ашигладаг Makefile нь 3887 мөр болж өссөн бөгөөд бидний хүссэн шиг тийм ч энгийн биш гэдгийг тэмдэглэжээ. Meson-ийн хэрэглүүр нь бүтээх системийг хялбарчилж, платформ хоорондын бүтээн байгуулалтад тохиромжтой бөгөөд Make utility-ийн талаар туршлагагүй эхлэгч эсвэл хөгжүүлэгчдэд барилга байгууламжийг илүү хүртээмжтэй болгодог. Ойрын ирээдүйд Make болон CMake-ийн дэмжлэгийг зогсоох төлөвлөгөө байхгүй байна.
- Багц файл дахь өгөгдлийн блокуудын бүрэн бүтэн байдлыг шалгахад ашигладаг хяналтын нийлбэрийг тооцоолохдоо SHA-1 хэшийн өөр хувилбаруудыг ашиглах боломжийг олгохын тулд бүтээх сонголтуудыг нэмсэн. шалгах нийлбэрийн тооцооны гүйцэтгэл нь маш чухал юм, жишээ нь, Линукс цөмтэй репозиторыг клончлох үед процессорын нийт цагийн 78 орчим хувийг тооцоолоход зарцуулдаг; Өгөгдмөл хэрэгжүүлэлт нь нэмэлт мөргөлдөөнийг шалгах, SHAttered, Shambles зэрэг SHA-1 халдлагаас хамгаалах хамгаалалтыг агуулдаг. Нэмэлт нөөц зарцуулдаг ийм хамгаалалт нь зөвхөн SHA-1-ийг криптографийн зорилгоор ашиглахад л утга учиртай бөгөөд индексийн мэдээллийн бүрэн бүтэн байдлыг шалгахад ашиггүй болно.
Крипто системд тохиромжгүй, хурдан SHA-1 хэрэгжүүлэлтээр Git-ийг бүтээхийн тулд цуврал *_UNSAFE сонголтыг санал болгож байна, жишээ нь "OPENSSL_SHA1_UNSAFE". GitHub дээр хялбаршуулсан SHA-1-ээр бүтээх нь өгөгдөл хайх, хувилах үйл ажиллагааны гүйцэтгэлийг 10-13% нэмэгдүүлэх боломжийг олгосон.
- "Rage-diff" командын "-remerge-diff" сонголтыг ашиглах боломжийг нэмсэн бөгөөд энэ нь "нийтгэх" командыг боловсруулсны дараа нэгтгэх үр дүн болон үйл ажиллагаанд тусгагдсан бодит өгөгдлийн хоорондох ялгааг харуулах боломжийг олгодог. "--remerge-diff" сонголтыг ашиглах үед зөрчил шийдвэрлэх хоорондын ялгааг эцэг эхийн салбар тус бүрээр ялгахгүй, харин нэгтгэх зөрчилтэй файл болон зөрчил арилгасан файлын хоорондох ерөнхий ялгааг харуулав. Range-diff командын контекстэд шинэ сонголт нь rebase командыг --rebase-merges сонголттой шилжүүлсний дараа амлалтуудын багцыг харьцуулахад хэрэгтэй байж болох юм.
- Санах ойн алдагдал илрүүлэх идэвхжсэн Git тестийн иж бүрдлийг ажиллуулах боломжийг нэмсэн. Git нь дуудагдсан функцийг гүйцэтгэсний дараа гарах хэрэгслүүдээр хангадаг тул санах ой алдагдлыг урьд өмнө нь тийм ч том асуудал гэж үздэггүй байв. Санах ойн алдагдлыг бүрэн арилгах хэрэгцээ нь дотоод функцийг урт хугацааны үйл явцад ашиглаж болох тусдаа номын сан руу шилжүүлэх ажил эхэлсний дараа зайлшгүй шаардлагатай болсон.
- Ирээдүйд ашиглахаа больсон хуучирсан горим, функцүүдийн жагсаалтыг гаргаж эхэлсэн. Git 3.0 хувилбар дээр хуучирсан функцуудыг устгах төлөвтэй байгаа бөгөөд үүнд буцаж нийцтэй байдлыг эвдсэн өөрчлөлтүүд багтсан болно.
- Репозитор дахь холбоосуудын жагсаалтыг харуулдаг "git for-each-ref" командыг үргэлжлүүлэн оновчлох. Холбоосын шүүлтүүр болон гаралтыг форматлахад чиглүүлэгчдийг нэгтгэсэн оновчлол нь одоо зөвхөн эрэмблэгдээгүй гаралтад төдийгүй "--sort" сонголтыг зааж өгсөн үед ч хэрэгжинэ.
- Хадгалах газарт салбар болон шошгоны лавлагааг үр дүнтэй хадгалахын тулд блок хадгалах "буцааж болох" арын хэсгийн хэрэгжилтийг сайжруулсан. Reftable нь маш олон тооны холбоос бүхий агуулахаас хайх, унших, бичих ажлыг ихээхэн хурдасгах боломжийг олгодог. Шинэ хувилбар нь libgit номын санг бүтээхээс хамааралгүй болгох үүднээс зарим туслах API-г дуудахаа больсон. Санах ойн хуваарилалтын функцээр буцаж ирсэн алдаануудад дасан зохицох зохицуулалтыг хэрэгжүүлсэн (санах ой хангалтгүй байх нь эвдрэлд хүргэхгүй). Холбоос үүсгэх үйлдлүүд хурдасч, санах ойн хэрэглээ багассан.
- Хэсэгчилсэн клончлолын хэрэгжилт нь "git gc" командыг гүйцэтгэсний дараа репозиторын гогцоо болон эвдрэлд хүргэсэн асуудлуудыг шийдсэн.
- "git fetch" командыг гүйцэтгэх үед " локал систем дээр "refs/remotes/" байхгүй бол /HEAD" болон HEAD-ийн хамаарах салбарны нөгөө талд байгаа байдал, "refs/remotes/ /HEAD" одоо энэ хэлхээс рүү чиглүүлж байна. Синхрончлолыг хянахын тулд "refs/remotes/ Холболтын нөгөө талд HEAD гэсэн утгатай / HEAD " гэж алсын тохиргоог нэмсэн. .followRemoteHEAD".
- "Алсын удирдлага" тохиргоог нэмсэн. .serverOption" тушаалын мөрийн сонголттой төстэй "-serverOption= "
- "git rebase --rebase-merges" команд нь аль болох салбаруудын нэрийг шошго болгон ашиглах боломжийг олгодог.
- GIT_EDITOR орчны хувьсагчаар заасан гадаад текст засварлагчийн тэмдэглэлийг нээдэг 'git notes add' болон 'git note append' командуудад '-e' тугийг нэмсэн.
- GCC 15 болон C23 стандарттай нийцтэй байдал сайжирсан.
- libcURL болон Perl-ийн хуучин хувилбаруудыг дэмжихээ больсон.
Эх сурвалж: opennet.ru
