Git 2.36 эх сурвалжийн хяналтын хувилбар

Гурван сарын хөгжүүлэлтийн дараа Git 2.36 тархсан эхийн хяналтын систем гарсан. Git бол хамгийн алдартай, найдвартай, өндөр гүйцэтгэлтэй хувилбарын хяналтын системүүдийн нэг бөгөөд салбарлах, нэгтгэх дээр суурилсан уян хатан шугаман бус хөгжүүлэлтийн хэрэгслээр хангадаг. Түүхийн бүрэн бүтэн байдал, буцаан хүчинтэй өөрчлөлтийг эсэргүүцэхийн тулд амлалт бүрт өмнөх түүхийг бүхэлд нь далд хэшлэх аргыг ашигладаг бөгөөд хөгжүүлэгчдийн тоон гарын үсгээр хувь хүний ​​шошго, амлалтуудыг баталгаажуулах боломжтой.

Өмнөх хувилбартай харьцуулахад шинэ хувилбарт 717 өөрчлөлт орсон бөгөөд 96 хөгжүүлэгчийн оролцоотойгоор бэлтгэгдсэн бөгөөд үүнээс 26 нь анх удаа хөгжүүлэлтэд оролцсон байна. Гол инноваци:

  • “git log” болон “git show” командууд нь “-remerge-diff” гэсэн сонголттой болсон бөгөөд энэ нь “нэтгэх” командыг боловсруулсны дараа нэгтгэлийн нийт үр дүн болон үйл ажиллагаанд тусгагдсан бодит өгөгдлийн хоорондох ялгааг харуулах боломжийг олгодог. , энэ нь нэгдэх зөрчилдөөнийг шийдвэрлэсний үр дүнд хийсэн өөрчлөлтийг тодорхой үнэлэх боломжийг олгодог. Ердийн "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 хувьсагчийг ашиглан бичих үйлдлийн дараа fsync нэмэлт дуудагдах дотоод Git бүтцийн жагсаалтыг зааж өгч болно. core.fsyncMethod хувьсагч нь кэшийг цэвэрлэх аргыг сонгох боломжийг олгодог, жишээлбэл, та ижил нэртэй системийн дуудлагыг ашиглахын тулд fsync-ийг сонгох эсвэл хуудасны кэшээр бичихийн тулд зөвхөн бичих горимыг зааж өгөх боломжтой.

  • Бусад хэрэглэгчид .git лавлахуудыг хуваалцсан хэсгүүдэд орлуулахад хүргэдэг эмзэг байдлаас хамгаалахын тулд репозитор эзэмшигчийн баталгаажуулалтыг сайжруулсан. Ямар ч git командыг зөвхөн өөрсдийн ".git" директоруудад л гүйцэтгэх боломжтой болсон. Хэрэв репозитортой лавлах нь өөр хэрэглэгчийнх бол анхдагчаар алдаа гарч ирнэ. Энэ үйлдлийг safe.directory тохиргоог ашиглан идэвхгүй болгож болно.
  • Git объектуудын эх агуулгыг гаргахад зориулагдсан "git cat-file" команд нь өмнө нь байсан "--batch" болон "--batch-check"-ийг нөхдөг "--batch-command" сонголтоор нэмэгдүүлсэн. ” командууд нь контентыг харуулахын тулд " контент <объект>" эсвэл объектын талаарх мэдээллийг харуулахын тулд "мэдээлэл <объект>"-ыг ашиглан гаралтын төрлийг дасан зохицох чадвартай сонгох боломжтой. Нэмж хэлэхэд гаралтын буферийг угаахын тулд "угаах" командыг дэмждэг.
  • Объектын модны агуулгын жагсаалтыг гаргах зориулалттай "git ls-tree" командад "-зөвхөн нэр"-тэй адил "-зөвхөн oid" ("-зөвхөн объект") сонголтыг нэмсэн. ”, скриптүүдийн дуудлагыг хялбарчлахын тулд зөвхөн объект танигчийг харуулж байна. Мөн горим, төрөл, нэр, хэмжээний талаарх мэдээллийг нэгтгэн өөрийн гаралтын форматыг тодорхойлох боломжийг олгодог "--format" сонголтыг хэрэгжүүлсэн.
  • “git bisect run” команд нь скриптийн гүйцэтгэгдэх файлын тугийг тохируулаагүй, энэ тохиолдолд 126 эсвэл 127 код бүхий алдааг харуулахыг илрүүлдэг (өмнө нь скриптийг ажиллуулах боломжгүй байсан бол бүх засварыг асуудалтай гэж тэмдэглэдэг байсан) .
  • Орон нутгийн системд байгаа агуулгын талаар нөгөө талдаа мэдэгдэхгүйгээр бүх объектыг дуудах "git fetch" командад --refetch сонголтыг нэмсэн. Энэ зан үйл нь орон нутгийн мэдээллийн бүрэн бүтэн байдал тодорхойгүй үед алдаа дутагдлыг сэргээхэд тустай байж болно.
  • "git update-index", "git checkout-index", "git read-tree" болон "git clean" командууд нь гүйцэтгэлийг сайжруулж, хэсэгчилсэн индексийн үйлдлийг гүйцэтгэдэг агуулахын зайг хэмнэхийн тулд хэсэгчилсэн индексүүдийг дэмждэг болсон. cloning (sparse-checkout). ).
  • “git clone —filter=… —recurse-submodules” командын үйлдлийг өөрчилсөн бөгөөд энэ нь одоо дэд модулиудыг хэсэгчлэн хувилахад хүргэдэг (өмнө нь ийм командуудыг гүйцэтгэх үед шүүлтүүрийг зөвхөн үндсэн агуулгад ашигладаг байсан бөгөөд дэд модулиуд нь шүүлтүүрийг харгалзахгүйгээр бүрэн хувилсан).
  • "Git bundle" команд нь хэсэгчилсэн клон хийх үйлдлүүдтэй адил контентыг сонгон байрлуулах шүүлтүүрийг зааж өгөх дэмжлэгийг нэмсэн.
  • Дэд модулиудыг рекурсиваар туулахын тулд "git салбар" командад "--recurse-submodules" сонголтыг нэмсэн.
  • Userdiff нь Котлин хэлний шинэ зохицуулагчийг санал болгож байна.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх