Git 2.55 ကို Rust အထောက်အပံ့ကို default အနေဖြင့် enable လုပ်ထားပြီး ဖြန့်ချိလိုက်ပါပြီ။

distributed source control system ရဲ့ Git 2.55 ဖြန့်ချိမှုကို ကြေညာလိုက်ပါပြီ။ အဓိကပြောင်းလဲမှုတွေကတော့ - Rust builds တွေကို default အနေနဲ့ ထည့်သွင်းခြင်း၊ အကောင်အထည်ဖော်မှု Linux fsmonitor လုပ်ငန်းစဉ်၊ incremental MIDX အညွှန်းကိန်းကို ပြန်လည်ထုပ်ပိုးရန်အတွက် ဗျူဟာအသစ်၊ commit တစ်ခုကို ပြင်ဆင်ရန်အတွက် "git history fixup" command၊ object availability bitmap generation ကို အကောင်းဆုံးဖြစ်အောင်ပြုလုပ်ခြင်း၊ parallel hook execution အတွက် ပံ့ပိုးမှုနှင့် "git format-rev" command။ Git ကို GPLv2+ လိုင်စင်အောက်တွင် လိုင်စင်ချထားသည်။

ယခင်ထုတ်ဝေမှုနှင့် နှိုင်းယှဉ်ပါက ဗားရှင်းအသစ်တွင် developer ၁၀၀ ၏ အကူအညီဖြင့် ပြင်ဆင်ထားသော ပြောင်းလဲမှု ၅၀၅ ခု ပါဝင်ပြီး ၎င်းတို့အနက် ၃၃ ဦးသည် Git ဖွံ့ဖြိုးတိုးတက်မှုတွင် အသစ်ဖြစ်သည်။ အဓိက အင်္ဂါရပ်အသစ်များ (၁၊ ၂၊ ၃):

  • Rust ဘာသာစကား အစိတ်အပိုင်း ပံ့ပိုးမှုကို မူရင်းအားဖြင့် ဖွင့်ထားသည်။ rustc compiler
    Rust ကို build dependencies တွေမှာ ထည့်သွင်းထားပါတယ်။ Rust မပါဘဲ build လုပ်ဖို့ make utility ကို run တဲ့အခါ "NO_RUST=1" flag ကိုသုံးနိုင်သလို "meson configure" ကို run တဲ့အခါ "-Drust=disabled" ကိုသုံးနိုင်ပါတယ်။ Rust နဲ့ building ကို disable လုပ်နိုင်တဲ့စွမ်းရည်ကို Git 3.0 အထိ support လုပ်မှာဖြစ်ပြီး Rust ကို required dependency အနေနဲ့ ထည့်သွင်းပေးမှာပါ။ Rust က SHA-1 နဲ့ SHA-256 hash configuration တွေကြားမှာ portability အတွက် layer တစ်ခုအပြင် variable-length integers တွေကို encoding နဲ့ decoding လိုမျိုး internal function တွေကိုလည်း implement လုပ်ပါတယ်။ Git internals တွေကို အနာဂတ်မှာ Rust မှာ ပြန်လည်ရေးသားဖို့ မျှော်လင့်ရပါတယ်။
  • ပြောင်းလဲမှုများ၏ မှတ်တမ်းကို ပြန်လည်ရေးသားနိုင်စွမ်းကို ပေးစွမ်းသည့် စမ်းသပ်ဆဲ "git history" command ကို commit တစ်ခုကို ပြင်ဆင်ရန်အတွက် "git history fixup" လုပ်ဆောင်ချက်ဖြင့် အပ်ဒိတ်လုပ်ထားသည်။ "fixup" လုပ်ဆောင်ချက်သည် "git add" မှတစ်ဆင့် ထည့်သွင်းထားသော ပြောင်းလဲမှုများကို ယခင် commit သို့ ရွှေ့ရန်နှင့် နောက်ဆက်တွဲ commit အားလုံးကို အလိုအလျောက် ပြန်လည်ရေးသားရန် ခွင့်ပြုသည်၊ ၎င်းသည် "git commit --fixup=" command ကို လုပ်ဆောင်ခြင်းနှင့် ဆင်တူသည်။ " နှင့် "git rebase --autosquash" ကို လုပ်ဆောင်ခြင်း ~»။
  • ပလက်ဖောင်းအတွက် Linux fsmonitor background process ကို အကောင်အထည်ဖော်ပြီးဖြစ်ပြီး inotify mechanism ကို အသုံးပြု၍ file system အတွင်းရှိ ပြောင်းလဲမှုများကို စောင့်ကြည့်ပေးပြီး "git status" ကဲ့သို့သော command များကို လုပ်ဆောင်သည့်အခါ အလုပ်လုပ်နေသော directory တစ်ခုလုံးကို ဖြတ်သန်းခြင်းမှ ရှောင်ရှားနိုင်စေပါသည်။ ၎င်းကို "core.fsmonitor" setting မှတစ်ဆင့် ဖွင့်နိုင်ပါသည်။
  • "git repack" command ကို "--write-midx=incremental" option ဖြင့် update လုပ်ထားပါသည်။ ဤ option သည် incremental MIDX index (multi-pack index) တွင် metadata ကို update လုပ်ရန် strategy အသစ်တစ်ခုကို အကောင်အထည်ဖော်ပေးပြီး index တစ်ခုလုံးကို repack လုပ်ရန် မလိုအပ်တော့ပါ။ incremental multi-pack index သည် packfiles များတစ်လျှောက် object များ၏ distribution နှင့်ပတ်သက်သော အချက်အလက်များပါ၀င်သည့် index ကြီးတစ်ခုတည်းအစား layer များကို အသုံးပြုပါသည်။ layer တစ်ခုစီသည် packfiles အရေအတွက်ကို သတ်မှတ်ထားသော အရေအတွက်ဖြင့် ဖုံးအုပ်ထားပြီး သီးခြား bitmap file တစ်ခုတွင် သိမ်းဆည်းထားသည်။ ဤဖွဲ့စည်းပုံသည် packfiles အသစ်များရှိ object များအကြောင်း data များကို index တွင်ထည့်သွင်းနိုင်စေပြီး၊ ရှိပြီးသား layer များကို ပြန်လည်တည်ဆောက်ခြင်းမရှိဘဲ index နှင့် layer အသစ်များကို ချိတ်ဆက်ပေးပါသည်။

    "git repack --write-midx=incremental" command သည် မကြာသေးမီက ဖန်တီးထားသော packfiles များပါဝင်သည့် incremental MIDX index သို့ layer အသစ်တစ်ခု ထပ်ထည့်ပေးသည်။ "--geometric" repository packing mode နှင့် ပေါင်းစပ်လိုက်သောအခါ၊ command အသစ်သည် packfiles များစွာမှ object အသစ်များကို ပိုကြီးသော packfile တစ်ခုတည်းအဖြစ် ပေါင်းစပ်နိုင်စေပြီး လိုအပ်ပါက incremental MIDX index ၏ အနီးနားရှိ layer များစွာကို packing နှင့် 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 လုပ်ထားပါသည်။ test repository တွင်၊ ဤ optimization များသည် bitmap ထုတ်လုပ်ချိန်ကို ၆၁၂ စက္ကန့်မှ ၂၉၄ စက္ကန့်အထိ လျှော့ချပေးခဲ့ပါသည်။
  • ယခုအခါ configuration ဖိုင်များတွင် သီးခြား hook များ၏ parallel execution ကို ရနိုင်ပါပြီ။ commit notes များကို ပြောင်းလဲခြင်း သို့မဟုတ် index များနှင့် working tree ကို စစ်ဆေးခြင်းကဲ့သို့သော shared state ကို သက်ရောက်မှုရှိသော သို့မဟုတ် ထည့်သွင်းစဉ်းစားသော hook များကို parallel ဖြင့် မလည်ပတ်နိုင်ပါ။ သို့သော် linter checking နှင့် unit testing အတွက် hook များကို parallel ဖြင့် မလည်ပတ်နိုင်ပါ။ parallel execution ကို ခွင့်ပြုသော hook များကို "hook.hook_name.parallel = true" parameter ကို အသုံးပြု၍ configure လုပ်ထားသည်။ တစ်ပြိုင်နက်တည်း လုပ်ဆောင်နိုင်သော jobs အရေအတွက်ကို hook.jobs၊ hook setting မှ ဆုံးဖြတ်သည်။ .jobs သို့မဟုတ် "-j" command line option။
  • "git pack-objects --path-walk" command သည် ယခုအခါ "blob:none", "blob:limit=" ကဲ့သို့သော filter များကို သတ်မှတ်နိုင်စေပါသည်။ ", "သစ်ပင်:၀", "အရာဝတ္ထု:အမျိုးအစား=" Âť, ÂŤ ရှားပါးသည်- " နှင့် "ပေါင်းစပ်:". စမ်းသပ်မှုတွင် "--path-walk" ကို လုပ်ဆောင်သည့်အခါ blobs များကို စွန့်ပစ်ခြင်းသည် ထုတ်လုပ်ထားသော pack ဖိုင်၏ အရွယ်အစားကို 16% လျှော့ချပေးခဲ့သည်။
  • 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 အနေဖြင့် ဖွင့်ထားသည်။ ဆာဗာမကောင်းသောနည်းလမ်းဖြင့် ဝင်ရောက်သည့်အခါ ဆာဗာ ထိုကဲ့သို့သော escape sequences များကို output ကို ဝှက်ရန် သို့မဟုတ် ပြုပြင်ရန်အတွက် အသုံးပြုနိုင်သည်၊ ဥပမာအားဖြင့် cursor ရွေ့လျားမှုနှင့် စာသားကို ရှင်းလင်းရန်အတွက် escape sequences များမှတစ်ဆင့်ဖြစ်သည်။ element များကို မီးမောင်းထိုးပြရန်အတွက် escape sequences များအတွက် ပံ့ပိုးမှုကို ဆက်လက်ထိန်းသိမ်းထားသည်။
  • git checkout -m command သည် ယခုအခါ ပဋိပက္ခဖြစ်နေသော ဒေသတွင်းပြောင်းလဲမှုများကို stash area သို့ အလိုအလျောက် သိမ်းဆည်းပေးပါသည်။
  • "git push" command သည် command တစ်ခုတည်းဖြင့် branch တစ်ခုကို external Git server များစွာသို့ push လုပ်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်၊ main branch ကို main server သို့သာမက mirrors သို့ push လုပ်ရန်အတွက်၊ သင်သည် "publish" group တစ်ခုကို ဖန်တီးနိုင်သည် ဆာဗာများ "github", "gitlab" နှင့် "mirror":

    git config remotes.publish "github gitlab mirror" ကို ထုတ်ဝေပါ။
    git push publish main

  • "git log --graph" command တွင် ယခုအခါ "--graph-lane-limit=" option ပါရှိသည်။ Âť အကိုင်းအခက်များကို မြင်ယောင်သည့်အခါ ဒေါင်လိုက်ဘားအရေအတွက်ကို ကန့်သတ်ရန်၊ ၎င်းသည် အကိုင်းအခက်များစွာပါရှိသော repositories များတွင် commit data အတွက် မျက်နှာပြင်ပေါ်တွင် နေရာချန်ထားနိုင်စေပါသည်။

    ...
    * | | | | | 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 ကို စစ်ထုတ်ပါ

  • "git log" နှင့် "git rev-list" command များတွင် ယခုအခါ "--max-count-oldest=" option ရှိပါပြီ။ ၊ ၎င်းက အကွာအဝေးတစ်ခုရှိ အသက်အကြီးဆုံး commits N ခုကို ရွေးချယ်နိုင်စေပါသည်။

source: opennet.ru

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster