បន្ទាប់ពីបីខែនៃការអភិវឌ្ឍន៍ ការចេញផ្សាយប្រព័ន្ធគ្រប់គ្រងប្រភពចែកចាយ Git 2.41 ត្រូវបានបោះពុម្ពផ្សាយ។ Git គឺជាប្រព័ន្ធត្រួតពិនិត្យកំណែដែលពេញនិយមបំផុត ដែលអាចទុកចិត្តបាន និងដំណើរការខ្ពស់ដែលផ្តល់នូវឧបករណ៍អភិវឌ្ឍន៍ដែលមិនមែនជាលីនេអ៊ែរដែលអាចបត់បែនបាន ដោយផ្អែកលើការបំបែកសាខា និងការរួមបញ្ចូលគ្នា។ ដើម្បីធានាបាននូវភាពសុចរិតនៃប្រវត្តិ និងការទប់ទល់នឹងការផ្លាស់ប្តូរឡើងវិញ ការបិទបាំងដោយប្រយោលនៃប្រវត្តិមុនទាំងមូលនៅក្នុងការប្តេជ្ញាចិត្តនីមួយៗ ត្រូវបានគេប្រើប្រាស់ វាក៏អាចធ្វើទៅបានដើម្បីផ្ទៀងផ្ទាត់ស្លាកបុគ្គល និងការប្រព្រឹត្តដោយហត្ថលេខាឌីជីថលពីអ្នកអភិវឌ្ឍន៍។
បើប្រៀបធៀបទៅនឹងការចេញផ្សាយមុន កំណែថ្មីរួមមានការផ្លាស់ប្តូរចំនួន 542 ដែលរៀបចំដោយមានការចូលរួមពីអ្នកអភិវឌ្ឍន៍ចំនួន 95 នាក់ ដែលក្នុងនោះ 29 នាក់បានចូលរួមក្នុងការអភិវឌ្ឍន៍ជាលើកដំបូង។ ការច្នៃប្រឌិតសំខាន់ៗ៖
- ការកែលម្អការគ្រប់គ្រងវត្ថុដែលមិនអាចទៅដល់បានដែលមិនត្រូវបានយោងនៅក្នុងឃ្លាំង (មិនយោងដោយសាខា ឬស្លាក)។ វត្ថុដែលមិនអាចទៅដល់បានត្រូវបានលុបដោយអ្នកប្រមូលសំរាម ប៉ុន្តែរក្សានៅក្នុងឃ្លាំងសម្រាប់ពេលវេលាជាក់លាក់មួយ មុនពេលពួកវាត្រូវបានលុប ដើម្បីជៀសវាងលក្ខខណ្ឌនៃការប្រណាំង។ ដើម្បីតាមដានរយៈពេលនៃការកើតឡើងនៃវត្ថុដែលមិនអាចទៅដល់បាន វាចាំបាច់ក្នុងការភ្ជាប់ស្លាកទៅពួកវាជាមួយនឹងពេលវេលានៃការផ្លាស់ប្តូរវត្ថុស្រដៀងគ្នា ដែលមិនអនុញ្ញាតឱ្យរក្សាទុកពួកវាក្នុងឯកសារកញ្ចប់មួយ ដែលវត្ថុទាំងអស់មានពេលវេលាផ្លាស់ប្តូរធម្មតា។ ពីមុន វត្ថុដែលមិនអាចទៅដល់បាននីមួយៗត្រូវបានរក្សាទុកក្នុងឯកសារដាច់ដោយឡែក ដែលនាំឱ្យមានបញ្ហានៅពេលដែលមានវត្ថុដែលមិនអាចទៅដល់បានថ្មីៗមួយចំនួនធំ ដែលមិនទាន់មានសិទ្ធិលុប។ នៅក្នុងការចេញផ្សាយថ្មី យន្តការ "cruft packs" ត្រូវបានប្រើតាមលំនាំដើមសម្រាប់ការវេចខ្ចប់វត្ថុដែលមិនអាចទៅដល់បាន ដែលអនុញ្ញាតឱ្យអ្នករក្សាទុកវត្ថុដែលមិនអាចទៅដល់បានទាំងអស់នៅក្នុងឯកសារកញ្ចប់មួយ ហើយទិន្នន័យអំពីពេលវេលានៃការកែប្រែនៃវត្ថុនីមួយៗត្រូវបានឆ្លុះបញ្ចាំងនៅក្នុងតារាងដាច់ដោយឡែកមួយ ដែលត្រូវបានរក្សាទុក។ នៅក្នុងឯកសារដែលមានផ្នែកបន្ថែម “.mtimes” និងភ្ជាប់ដោយប្រើឯកសារលិបិក្រមដែលមានផ្នែកបន្ថែម “.idx”។

- ការរក្សាសន្ទស្សន៍បញ្ច្រាសនៅលើថាសសម្រាប់ឯកសារកញ្ចប់ត្រូវបានបើកតាមលំនាំដើម។ នៅពេលធ្វើតេស្តនៅលើឃ្លាំង torvalds/linux ការប្រើប្រាស់សន្ទស្សន៍បញ្ច្រាសបានធ្វើឱ្យវាអាចបង្កើនល្បឿនប្រតិបត្តិការ "git push" ដែលពឹងផ្អែកលើធនធានដោយ 1.49 ដង និងប្រតិបត្តិការសាមញ្ញដូចជាការគណនាទំហំនៃវត្ថុតែមួយដោយប្រើ "git cat- file —batch='%(objectsize:disk)' "77 ដង។ ឯកសារ (“.rev”) ដែលមានលិបិក្រមបញ្ច្រាសនឹងត្រូវបានរក្សាទុកនៅខាងក្នុងឃ្លាំងនៅក្នុងថត “.git/objects/pack” ។
សូមចាំថា Git រក្សាទុកទិន្នន័យទាំងអស់ក្នុងទម្រង់ជាវត្ថុ ដែលមានទីតាំងនៅក្នុងឯកសារដាច់ដោយឡែក។ ដើម្បីបង្កើនប្រសិទ្ធភាពនៃការធ្វើការជាមួយឃ្លាំង វត្ថុត្រូវបានដាក់បន្ថែមនៅក្នុងឯកសារកញ្ចប់ ដែលក្នុងនោះព័ត៌មានត្រូវបានបង្ហាញជាទម្រង់នៃវត្ថុដែលតាមពីក្រោយគ្នាទៅវិញទៅមក (ទម្រង់ស្រដៀងគ្នាត្រូវបានប្រើនៅពេលផ្ទេរវត្ថុជាមួយ git fetch និង git push ពាក្យបញ្ជា) ។ សម្រាប់ឯកសារកញ្ចប់នីមួយៗ ឯកសារលិបិក្រម (.idx) ត្រូវបានបង្កើតឡើង ដែលអនុញ្ញាតឱ្យអ្នកកំណត់បានយ៉ាងលឿននូវអុហ្វសិតនៅក្នុងឯកសារកញ្ចប់ ដែលវត្ថុដែលបានផ្តល់ឱ្យត្រូវបានរក្សាទុកដោយប្រើឧបករណ៍កំណត់អត្តសញ្ញាណវត្ថុ។
លិបិក្រមបញ្ច្រាសដែលបានរួមបញ្ចូលនៅក្នុងការចេញផ្សាយថ្មីនេះគឺមានគោលបំណងបង្កើនប្រសិទ្ធភាពដំណើរការនៃការកំណត់អត្តសញ្ញាណវត្ថុពីព័ត៌មានអំពីការដាក់វត្ថុនៅក្នុងឯកសារកញ្ចប់។ ពីមុន ការបំប្លែងបែបនេះត្រូវបានអនុវត្តភ្លាមៗ ខណៈពេលដែលកំពុងញែកឯកសារកញ្ចប់ ហើយត្រូវបានរក្សាទុកតែក្នុងអង្គចងចាំ ដែលមិនអនុញ្ញាតឱ្យប្រើសន្ទស្សន៍ស្រដៀងគ្នានេះឡើងវិញ និងបង្ខំឱ្យបង្កើតលិបិក្រមរាល់ពេល។ ប្រតិបត្តិការនៃការបង្កើតលិបិក្រមចុះមកដល់ការបង្កើតអារេនៃគូទីតាំងវត្ថុ និងតម្រៀបវាតាមទីតាំងដែលអាចចំណាយពេលយូរសម្រាប់ឯកសារកញ្ចប់ធំ។
ឧទាហរណ៍ ប្រតិបត្តិការដើម្បីបង្ហាញមាតិការបស់វត្ថុដែលប្រើលិបិក្រមផ្ទាល់គឺ 62 ដងលឿនជាងប្រតិបត្តិការដើម្បីបង្ហាញទំហំរបស់វត្ថុ ដែលទិន្នន័យពីទីតាំងទៅវត្ថុមិនត្រូវបានធ្វើលិបិក្រមទេ។ បន្ទាប់ពីប្រើសន្ទស្សន៍បញ្ច្រាស ប្រតិបត្តិការទាំងនេះចាប់ផ្តើមចំណាយពេលប្រហែលដូចគ្នា។ លិបិក្រមបញ្ច្រាសក៏អនុញ្ញាតឱ្យអ្នកបង្កើនល្បឿនប្រតិបត្តិការបញ្ជូនវត្ថុនៅពេលប្រតិបត្តិពាក្យបញ្ជាទាញយកនិងរុញដោយផ្ទេរដោយផ្ទាល់នូវទិន្នន័យដែលត្រៀមរួចជាស្រេចពីឌីស។

- ពិធីការ "ជំនួយការបញ្ជាក់អត្តសញ្ញាណ" ដែលប្រើដើម្បីផ្ទេរព័ត៌មានសម្ងាត់នៅពេលចូលប្រើឃ្លាំងដែលមានការចូលប្រើប្រាស់មានកំណត់ បានបន្ថែមការគាំទ្រសម្រាប់ការឆ្លងកាត់បឋមកថា WWW-Authenticate រវាងឧបករណ៍ដោះស្រាយព័ត៌មានសម្ងាត់ និងសេវាកម្មដែលការផ្ទៀងផ្ទាត់ត្រូវបានអនុវត្ត។ ការគាំទ្រសម្រាប់បឋមកថា WWW-Authenticate អនុញ្ញាតឱ្យអ្នកឆ្លងកាត់ប៉ារ៉ាម៉ែត្រវិសាលភាព OAuth សម្រាប់ការបំបែកជាលំដាប់នៃការចូលប្រើរបស់អ្នកប្រើប្រាស់ទៅកាន់ឃ្លាំង និងការកំណត់ព្រំដែននៃវិសាលភាពដែលមានសម្រាប់សំណើ។
- បានបន្ថែមជម្រើសធ្វើទ្រង់ទ្រាយ "%(ahead-behind:" ទៅពាក្យបញ្ជាសម្រាប់-នីមួយៗ-យោង៖ )” ដែលអនុញ្ញាតឱ្យអ្នកទទួលបានព័ត៌មានភ្លាមៗអំពីចំនួននៃការប្រព្រឹត្តដែលមានវត្តមាន ឬអវត្តមាននៅក្នុងសាខាជាក់លាក់មួយ ទាក់ទងទៅនឹងសាខាមួយផ្សេងទៀត (ចំនួនសាខាមួយនៅពីក្រោយ ឬមុនសាខាមួយទៀតនៅកម្រិតនៃការប្តេជ្ញាចិត្ត)។ ពីមុន ដើម្បីទទួលបានព័ត៌មានបែបនេះ អ្នកត្រូវដំណើរការពាក្យបញ្ជាពីរដាច់ដោយឡែកពីគ្នា៖ “git rev-list —count main..my-feature” ដើម្បីទទួលបានចំនួននៃការប្រព្រឹត្តតែមួយគត់ចំពោះសាខា និង “git rev-list —count my-feature ..main” ដើម្បីទទួលបានលេខដែលបាត់ការសន្យា។ ឥឡូវនេះការគណនាបែបនេះអាចត្រូវបានកាត់បន្ថយទៅជាពាក្យបញ្ជាតែមួយ ដែលសម្រួលដល់ការសរសេររបស់អ្នកដោះស្រាយ និងកាត់បន្ថយពេលវេលាប្រតិបត្តិ។ ឧទាហរណ៍ ដើម្បីបង្ហាញសាខាដែលមិនត្រូវបានបញ្ចូលគ្នា និងវាយតម្លៃថាតើពួកវានៅពីក្រោយ ឬនៅពីមុខសាខាសំខាន់ អ្នកអាចប្រើបន្ទាត់តែមួយ៖ $ git for-each-ref —no-merged=origin/HEAD \\ —format ='%(refname:short) %(ahead-behind:origin/HEAD)' \refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—មិនរាប់បញ្ចូល 16 96 tb/roaring-bitmaps 47 3 ជំនួសឱ្យស្គ្រីបដែលបានប្រើពីមុន ដែលដំណើរការយឺតជាង 17 ដង៖ $ git for-each-ref — format='%(refname:short)' —no-merged=origin/HEAD \refs/heads/tb | ពេលកំពុងអាន ref do ahead="$(git rev-list -count origin/HEAD..$ref)" behind="$(git rev-list -count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" រួចរាល់ | ជួរឈរ -t tb/cruft-extra-tips 2 96 tb/for-each-ref—មិនរាប់បញ្ចូល 16 96 tb/roaring-bitmap 47 3
- ជម្រើស "-porcelain" ត្រូវបានបន្ថែមទៅពាក្យបញ្ជា "git fetch" នៅពេលដែលបានបញ្ជាក់ លទ្ធផលត្រូវបានបង្កើតជាទម្រង់ " ", អានបានតិច ប៉ុន្តែងាយស្រួលជាងសម្រាប់ញែកជាស្គ្រីប។
- បានបន្ថែមការកំណត់ "fetch.hideRefs" ដែលអនុញ្ញាតឱ្យអ្នកបង្កើនល្បឿនប្រតិបត្តិការ "git fetch" ដោយលាក់ឯកសារយោងមួយចំនួននៅក្នុងឃ្លាំងទិន្នន័យក្នុងស្រុកក្នុងអំឡុងពេលនៃដំណាក់កាលនៃការត្រួតពិនិត្យថាតើម៉ាស៊ីនមេបានផ្ញើសំណុំពេញលេញនៃវត្ថុដែរឬទេ ដែលអនុញ្ញាតឱ្យអ្នកសន្សំសំចៃពេលវេលាដោយកំណត់ការត្រួតពិនិត្យទៅតែ ម៉ាស៊ីនបម្រើដែលទិន្នន័យត្រូវបានស្រង់ចេញដោយផ្ទាល់។ ឧទាហរណ៍ នៅពេលដំណើរការការធ្វើតេស្តលើប្រព័ន្ធដែលមានឃ្លាំងផ្ទុកដែលមានតំណភ្ជាប់ខាងក្រៅដែលបានតាមដានមួយចំនួនធំ មិនរាប់បញ្ចូលតំណភ្ជាប់ទាំងអស់លើកលែងតែតំណភ្ជាប់ដែលផ្ញើទៅកាន់គោលដៅ។ ម៉ាស៊ីនបម្រើ $remote បានកាត់បន្ថយពេលវេលាប្រតិបត្តិនៃប្រតិបត្តិការ "git fetch" ពី 20 នាទី មកត្រឹម 30 វិនាទី។
- ពាក្យបញ្ជា "git fsck" ផ្តល់នូវសមត្ថភាពក្នុងការត្រួតពិនិត្យអំពើពុករលួយ ការអនុលោមតាម checksum និងភាពត្រឹមត្រូវនៃតម្លៃនៅក្នុងផែនទីលទ្ធភាពប្រើប្រាស់ និងសន្ទស្សន៍បញ្ច្រាស។
- ពាក្យបញ្ជា "git clone --local" ឥឡូវនេះបង្ហាញកំហុសនៅពេលព្យាយាមចម្លងពីឃ្លាំងដែលមានតំណភ្ជាប់និមិត្តសញ្ញានៅខាងក្នុង $GIT_DIR ។
ប្រភព: opennet.ru


