
မိတ်ဆက်ပေးသည်။ ဖြန့်ဝေထားသော source code စီမံခန့်ခွဲမှုစနစ် ထုတ်ပြန်ခြင်း git 2.55အဓိကပြောင်းလဲမှုများထဲတွင်- Rust ဖြင့် default build ကို enable လုပ်ခြင်း၊ အကောင်အထည်ဖော်ခြင်း Linux fsmonitor လုပ်ငန်းစဉ်၊ incremental MIDX အညွှန်းကိန်းကို ပြန်လည်ထုပ်ပိုးရန်အတွက် ဗျူဟာအသစ်၊ commit တစ်ခုကို ပြင်ဆင်ရန်အတွက် git history fixup command၊ object availability bitmap generation ကို အကောင်းဆုံးဖြစ်အောင်ပြုလုပ်ခြင်း၊ hooks များ၏ parallel execution အတွက် ပံ့ပိုးမှု၊ git format-rev command။ Git Code ဖြန့်ဝေသည် GPLv2+ အောက်တွင် လိုင်စင်ရထားသည်။
ယခင်ထုတ်ဝေမှုနှင့် နှိုင်းယှဉ်ပါက ဗားရှင်းအသစ်တွင် developer ၁၀၀ ပါဝင်သည့် ပြင်ဆင်ထားသည့် ပြောင်းလဲမှု ၅၀၅ ခု ပါဝင်ပြီး ၎င်းတို့အနက် ၃၃ ဦးသည် Git ဖွံ့ဖြိုးတိုးတက်ရေးတွင် အသစ်ဖြစ်သည်။
အဓိက ဆန်းသစ်တီထွင်မှုများ (github.blog, gitlab.com/blog, gitlab.com/git-scm):
- ပုံမှန်အားဖြင့် ပါဝင်သည် Rust အစိတ်အပိုင်းများအတွက် ပံ့ပိုးမှု။ rustc compiler။ ထပ်ပြောသည် build dependencies များထဲသို့။ Rust မပါဘဲ တည်ဆောက်ရန်အတွက် make utility ကို run သည့်အခါ NO_RUST=1 flag ကို အသုံးပြုနိုင်သည် သို့မဟုတ် meson configure ကို run သည့်အခါ -Drust=disabled ကို အသုံးပြုနိုင်သည်။ Rust ဖြင့် တည်ဆောက်ခြင်းကို disable လုပ်နိုင်သည့်စွမ်းရည်ကို Git 3.0 အထိ ပံ့ပိုးပေးမည်ဖြစ်ပြီး၊ ၎င်းတွင် Rust သည် ပါဝင်ပါသည်။ လိုအပ်သော မှီခိုမှုများထဲတွင်။ Rust ဘာသာစကားသည် SHA-1 နှင့် SHA-256 hash configuration များအကြား ရွှေ့ပြောင်းနိုင်မှုအတွက် အလွှာတစ်ခုအပြင် variable-length integers များကို encoding နှင့် decoding ကဲ့သို့သော internal function အချို့ကိုလည်း အကောင်အထည်ဖော်သည်။ ပိုမိုအရေးကြီးသော internal Git components များကို အနာဂတ်တွင် Rust တွင် ပြန်လည်ရေးသားရန် မျှော်လင့်ရသည်။
- စမ်းသပ်အဖွဲ့ထံသို့"ဂစ်သမိုင်း""git history fixup" လုပ်ဆောင်ချက်ကို commit history rewriting tool တွင် ထည့်သွင်းထားပြီးဖြစ်ပြီး၊ ၎င်းသည် commit history ကို ပြန်လည်ရေးသားနိုင်စွမ်းကို ပေးပါသည်။ fixup လုပ်ဆောင်ချက်သည် git add မှတစ်ဆင့် ထည့်သွင်းထားသော ပြောင်းလဲမှုများကို ယခင် commit သို့ ရွှေ့ပြောင်းပြီး နောက်ဆက်တွဲ commit အားလုံးကို အလိုအလျောက် ပြန်လည်ရေးသားနိုင်စေပါသည်။ git commit --fixup= command ကို လုပ်ဆောင်သကဲ့သို့ပင်။ ပြီးတော့ git rebase --autosquash ကို လုပ်ဆောင်ပါ ~။
- ပလက်ဖောင်းအတွက် Linux နောက်ခံလုပ်ငန်းစဉ်ကို အကောင်အထည်ဖော်ပြီးပါပြီ fs မော်နီတာယန္တရားတစ်ခုကို အသုံးပြု၍ ဖိုင်စနစ်ရှိ ပြောင်းလဲမှုများကို ခြေရာခံသည့် အကြောင်းကြားပါ။ git status ကဲ့သို့သော command များကို run သည့်အခါ အလုပ်လုပ်သော directory တစ်ခုလုံးကို ဖြတ်သန်းခြင်းမှ ရှောင်ရှားနိုင်စေပါသည်။ ၎င်းကို " မှတစ်ဆင့် ဖွင့်နိုင်သည်။core.fsmonitor"။
- git repack command တွင် ယခုအခါ --write-midx=incremental option အသစ်တစ်ခုပါရှိသည်။ ဤ option သည် incremental MIDX index (multi-pack index) တွင် metadata ကို update လုပ်ရန် strategy အသစ်တစ်ခုကို အကောင်အထည်ဖော်ပေးပြီး index တစ်ခုလုံးကို ပြန်လည် pack လုပ်ရန် မလိုအပ်တော့ပါ။ incremental multi-pack index သည် packfiles များတစ်လျှောက် object များ၏ distribution နှင့်ပတ်သက်သည့် အချက်အလက်များပါရှိသော index ကြီးတစ်ခုတည်းအစား layer များကို အသုံးပြုသည်။ layer တစ်ခုစီသည် packfiles အရေအတွက်ကို သတ်မှတ်ထားသော အရေအတွက်ဖြင့် ဖုံးအုပ်ထားပြီး သီးခြား bitmap file တစ်ခုတွင် သိမ်းဆည်းထားသည်။ ဤဖွဲ့စည်းပုံသည် ရှိပြီးသား layer များကို ပြန်လည်တည်ဆောက်ခြင်းမရှိဘဲ index သို့ layer အသစ်များ ပေါင်းထည့်ခြင်းဖြင့် packfiles အသစ်များရှိ object များအကြောင်း data များကို index တွင် ထည့်သွင်းနိုင်စေပါသည်။ git repack --write-midx=incremental command သည် မကြာသေးမီက ဖန်တီးထားသော packfiles များကို ဖုံးအုပ်ထားသော incremental MIDX index သို့ layer အသစ်တစ်ခု ထပ်ထည့်သည်။ --geometric repository packing mode နှင့် ပေါင်းစပ်လိုက်သောအခါ command အသစ်သည် packfiles များစွာမှ object အသစ်များကို packfile ကြီးတစ်ခုတည်းအဖြစ် ပေါင်းစပ်နိုင်စေပြီး လိုအပ်ပါက incremental MIDX index ၏ အနီးနားရှိ layer အများအပြားကို pack လုပ်ပြီး merge လုပ်နိုင်သည်။ ဒီဗျူဟာက git repack ကို အပေါ်ဆုံး layer တွေကိုပဲ ပြန်ရေးခွင့်ပြုပြီး အဟောင်းတွေ၊ ပိုကြီးတဲ့ layer တွေကို မပျက်စီးအောင်ထားရှိပြီး object အရေအတွက်ရဲ့ logarithm နဲ့ အချိုးကျတဲ့ layer အရေအတွက်ကို ထိန်းသိမ်းထားခြင်းအားဖြင့် layer chain ရဲ့ ထိန်းမနိုင်သိမ်းမရ ကြီးထွားမှုကို ကာကွယ်ပေးပါတယ်။
- object availability bitmaps များထုတ်လုပ်ခြင်းကို မလိုအပ်သော recursion၊ object positions များကို caching လုပ်ခြင်း၊ XOR operation နှင့်ပေါင်းစပ်ခြင်းမပြုမီ bitmaps များကို sort လုပ်ခြင်းနှင့် pseudo-merge bitmaps များဖန်တီးရန် code ကိုပြန်လည်ပြင်ဆင်ခြင်းတို့ကို ဖယ်ရှားပေးသည့် object tree traversal algorithm အသစ်မှတစ်ဆင့် သိသိသာသာ optimize လုပ်ထားပါသည်။အတုအယောင်ပေါင်းစည်းမှု). စမ်းသပ် repository တွင်၊ optimization များသည် bitmap ထုတ်လုပ်ချိန်ကို ၆၁၂ မှ ၂၉၄ စက္ကန့်အထိ လျှော့ချပေးခဲ့သည်။
- သီးခြားတာဝန်များကို တစ်ပြိုင်နက်တည်း လုပ်ဆောင်နိုင်စွမ်းကို အကောင်အထည်ဖော်ပြီးပါပြီ ချိတ် configuration ဖိုင်များတွင်။ commit notes များကိုပြောင်းလဲခြင်း သို့မဟုတ် indexes များနှင့် working tree ကိုစစ်ဆေးခြင်းကဲ့သို့သော shared state ကိုအကျိုးသက်ရောက်စေသော သို့မဟုတ် ထည့်သွင်းစဉ်းစားသော hooks များကို parallel ဖြင့် run ၍မရပါ။ သို့သော် linter checking နှင့် unit testing အတွက် hooks များကို parallel ဖြင့် run နိုင်သည်။ parallel execution ကိုခွင့်ပြုသော hooks များကို hook.hook_name.parallel = true parameter ကို အသုံးပြု၍ configure လုပ်သည်။ တစ်ပြိုင်နက်တည်း run နိုင်သော jobs အရေအတွက်ကို hook.jobs၊ hook ဖြင့် ဆုံးဖြတ်သည်။ .jobs သို့မဟုတ် -j command line option။
- git pack-objects --path-walk command သည် blob:none၊ blob:limit= ကဲ့သို့သော filter များကို သတ်မှတ်ရန် ခွင့်ပြုသည်။ , tree:0, object:type= , ရှားပါးသည်: နှင့် ပေါင်းစပ်ပါ-။ စမ်းသပ်မှုတွင်၊ --path-walk ကို လုပ်ဆောင်သည့်အခါ blobs များကို စွန့်ပစ်ခြင်းသည် ထုတ်လုပ်ထားသော pack ဖိုင်၏ အရွယ်အစားကို ၁၆% လျှော့ချပေးသည်။
- commit list များတွင်ဖော်ပြထားသော သို့မဟုတ် arbitrary text တွင်တွေ့ရှိရသော revision များနှင့် object name များကို format လုပ်ရန်အတွက် git format-rev command ကိုထည့်သွင်းထားသည် (ဥပမာ၊ commit notes များကို processing လုပ်ရန်အတွက် hooks များတွင် ၎င်းကိုအသုံးပြုနိုင်သည်)။
git last-modified | git format-rev --stdin-mode=text --format=%an
Junio C Hamano builtin/commit.c
- ဆာဗာမှပေးပို့သော သတင်းအချက်အလက်ဆိုင်ရာ မက်ဆေ့ချ်များနှင့် အမှားစာသားများတွင် terminal control sequence အများစုကို Escape လုပ်ခြင်းကို default အနေဖြင့် ဖွင့်ထားသည်။ malicious server ကိုဝင်ရောက်သည့်အခါ၊ ထိုကဲ့သို့သော escape sequence များကို cursor ရွေ့လျားမှုနှင့် စာသားရှင်းလင်းရန်အတွက် escape sequence များမှတစ်ဆင့် output ကို ဝှက်ရန် သို့မဟုတ် ပြုပြင်ရန်အသုံးပြုနိုင်သည်။ element များကို မီးမောင်းထိုးပြရန်အတွက် escape sequence များအတွက် ပံ့ပိုးမှုကို ဆက်လက်ထိန်းသိမ်းထားသည်။
- git checkout -m command သည် ယခုအခါ ပဋိပက္ခဖြစ်နေသော ဒေသတွင်းပြောင်းလဲမှုများကို stash area သို့ အလိုအလျောက် သိမ်းဆည်းပေးပါသည်။
- git push command သည် command တစ်ခုတည်းဖြင့် branch တစ်ခုကို external Git server များစွာသို့ push လုပ်ခြင်းကို ယခုအခါ ပံ့ပိုးပေးပါသည်။ ဥပမာအားဖြင့်၊ main branch ကို primary server သို့သာမက mirrors သို့ push လုပ်ရန်အတွက် github၊ gitlab နှင့် mirror server များပါဝင်သော publish group တစ်ခုကို သင်ဖန်တီးနိုင်ပါသည်။
git config remotes.publish "github gitlab mirror" ကို ထုတ်ဝေပါ။
git push publish main
- --graph-lane-limit= option ကို git log --graph command တွင် ထည့်သွင်းထားသည်။ branch များကို မြင်ယောင်ကြည့်သည့်အခါ vertical bar အရေအတွက်ကို ကန့်သတ်ရန်၊ ၎င်းသည် branch အများအပြားပါရှိသော repositories များတွင် commit data အတွက် screen ပေါ်တွင် နေရာချန်ထားနိုင်စေပါသည်။
...
* | | | | | 619931f561 'dl/posix-unused-warning-clang' ပေါင်းစည်းရန် ဘရန့်ချ်
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: GIT_GNUC_PREREQ() နှိုင်းယှဉ်မှုကို ရိုးရှင်းအောင်ပြုလုပ်ပါ
| * | | | ~ ffd45926dc compat/posix.h: GIT_GNUC_PREREQ() နှင့် အသုံးမပြုရသေးသော အရာများကို ရှင်းလင်းပါ
|\ \ \ \ \ \~
| * | | | ~3f5203eeb4 ls-files: lstat မတိုင်မီ pathspec ကို စစ်ထုတ်ပါ
- --max-count-oldest= option ကို git log နှင့် git rev-list command များတွင် ထည့်သွင်းထားသည်။ ၊ ၎င်းက အကွာအဝေးတစ်ခုရှိ အသက်အကြီးဆုံး commits N ခုကို ရွေးချယ်နိုင်စေပါသည်။
source: linux.org.ru
