Git 2.37 тараагдсан эх сурвалжийн хяналтын системийн хувилбарыг зарлалаа. Git бол хамгийн алдартай, найдвартай, өндөр гүйцэтгэлтэй хувилбарын хяналтын системүүдийн нэг бөгөөд салбарлах, нэгтгэх дээр суурилсан уян хатан шугаман бус хөгжүүлэлтийн хэрэгслээр хангадаг. Түүхийн бүрэн бүтэн байдал, буцаан хүчинтэй өөрчлөлтийг эсэргүүцэхийн тулд амлалт бүрт өмнөх түүхийг бүхэлд нь далд хэшлэх аргыг ашигладаг бөгөөд хөгжүүлэгчдийн тоон гарын үсгээр хувь хүний шошго, амлалтуудыг баталгаажуулах боломжтой.
Өмнөх хувилбартай харьцуулахад шинэ хувилбарт 395 өөрчлөлт орсон бөгөөд 75 хөгжүүлэгчийн оролцоотойгоор бэлтгэгдсэн бөгөөд үүнээс 20 нь анх удаа хөгжүүлэлтэд оролцсон байна. Гол инноваци:
- Хадгалах сангийн зөвхөн нэг хэсгийг хамарсан хэсэгчилсэн индексийн механизм (сийрэг индекс) өргөн хэрэглээнд бэлэн болсон. Хэсэгчилсэн индексүүд нь гүйцэтгэлийг сайжруулж, хэсэгчлэн хувилах (сийрэг шалгах) үйлдлүүдийг гүйцэтгэдэг эсвэл хадгалах сангийн бүрэн бус хуулбартай ажилладаг репозиторуудад зай хэмнэх боломжтой. Шинэ хувилбар нь git show, git sparse-checkout, git stash командуудад хэсэгчилсэн индексүүдийг нэгтгэж дуусгасан. Зарим тохиолдолд гүйцэтгэлийн хурд 80%-иар нэмэгдсэн git stash командын тусламжтайгаар хэсэгчилсэн индексийг ашигласнаар гүйцэтгэлийн хамгийн мэдэгдэхүйц ашиг тусыг харж болно.
- Хадгалах газарт лавлагаагүй (салбар эсвэл шошгон дээр дурдаагүй) хүрэх боломжгүй объектуудыг савлах шинэ "cruft packs" механизмыг хэрэгжүүлсэн. Холбогдох боломжгүй объектуудыг хог цуглуулагч устгадаг боловч уралдааны нөхцөл байдлаас зайлсхийхийн тулд тэдгээрийг устгахаас өмнө тодорхой хугацаанд хадгалах газарт үлдэнэ. Хүрэх боломжгүй объектуудын үүсэх хугацааг хянахын тулд ижил төстэй объектын өөрчлөлтийн цагтай шошго хавсаргах шаардлагатай бөгөөд энэ нь бүх объектыг өөрчлөх нийтлэг хугацаатай нэг багц файлд хадгалахыг зөвшөөрдөггүй. Өмнө нь объект бүрийг тусад нь файлд хадгалах нь устгагдах эрхгүй олон тооны шинэ, хүрч чадахгүй объектууд байхад асуудал үүсгэдэг. Санал болгож буй "cruft packs" механизм нь бүх хүрч болохгүй объектуудыг нэг багц файлд хадгалах, мөн ".mtimes" өргөтгөлтэй файлд хадгалагдсан тусдаа хүснэгтэд объект бүрийн өөрчлөлтийн хугацааны мэдээллийг тусгах боломжийг олгодог.
- Windows болон macOS-ийн хувьд файлын системд гарсан өөрчлөлтийг хянах суурилуулсан механизм байдаг бөгөөд энэ нь "git status" гэх мэт үйлдлүүдийг гүйцэтгэх үед ажлын директорийг бүхэлд нь давтахаас зайлсхийх боломжийг олгодог. Өмнө нь өөрчлөлтийг хянахын тулд Watchman гэх мэт FS-ийн өөрчлөлтийг хянах гадаад хэрэгслүүдийг дэгээгээр холбож болох байсан ч энэ нь нэмэлт програм суулгах, тохиргоо хийх шаардлагатай байв. Одоо заасан функцийг суулгасан бөгөөд "git config core.fsmonitor true" командыг ашиглан идэвхжүүлж болно.
- "Git sparse-checkout" командын хувьд хэсэгчилсэн клончлох загваруудыг тодорхойлох арга болох "-конус" горимын өөр хувилбарын дэмжлэгийг хуучирсан гэж зарласан бөгөөд энэ нь хадгалах сангийн хамаарах хэсгийг тодорхойлох боломжийг олгодог. хэсэгчилсэн индексийг оновчлоход ашиглахыг зөвшөөрдөггүй ".gitignore" синтакс ашиглан файлуудыг тусад нь жагсаах үйлдлийг клон хийх.
- Дискэнд өөрчлөлт оруулахын тулд fsync() дуудлагыг тохируулах уян хатан байдлыг нэмэгдүүлсэн. "Batch" синхрончлолын стратегийн дэмжлэгийг "core.fsyncMethod" параметрт нэмсэн бөгөөд энэ нь нэг fsync()-ээр дахин тохируулагдсан буцаан бичих кэш дэх өөрчлөлтийг хуримтлуулж, олон тооны бие даасан файл бичих үед ажлыг хурдасгах боломжийг олгодог. залгах. “git add” командыг ашиглан 500 файл нэмсэн туршилтыг шинэ горим идэвхжсэн үед 0.15 секундэд дуусгасан бол fsync()-г залгахад файл бүрт 1.88 секунд, fsync ашиглахгүйгээр 0.06 секунд зарцуулсан.
- “git log” болон “git rev-list” зэрэг салбар дамжих командууд нь “-since-as-filter=X” гэсэн сонголттой болсон бөгөөд энэ нь танд “X”-ээс өмнөх үүргийн талаарх мэдээллийг шүүх боломжийг олгодог. "-sense" сонголтоос ялгаатай нь шинэ команд нь заасан хугацаанаас өмнөх эхний үйлдлээс хойш хайлтыг зогсоодоггүй шүүлтүүр хэлбэрээр хэрэгждэг.
- "Git remote" команд дээр "-v" тугийг зааж өгөхдөө репозиторын хэсэгчилсэн клонуудын талаарх мэдээллийг харуулна.
- "Анхааруулах", "үхэх", "зөвшөөрөх" гэсэн утгыг авах боломжтой "transfer.credentialsInUrl" тохиргоог нэмсэн. Хэрэв параметрт заасан бол "алсын. "Transfer.credentialsInUrl" тохиргоог "үхэх" гэж тохируулсан бол "татаж авах" эсвэл "түлхэх" үйлдэл хийх оролдлого амжилтгүй болно, эсвэл "анхааруулах" гэж тохируулсан бол анхааруулга өгнө.
- Анхдагч байдлаар, Perl-ээс C руу дахин бичсэн "git add -i" командын интерактив горимын шинэ хэрэгжилт идэвхжсэн байна.
Эх сурвалж: opennet.ru
