Git 2.56 အရင်းအမြစ်ထိန်းချုပ်မှုထုတ်ဝေမှု

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

  • "git add --resolved" မုဒ်ကို branch များ ပေါင်းစည်းသည့်အခါ ပဋိပက္ခများကို ဖြေရှင်းရန်အတွက် ထည့်သွင်းထားသည်။ ဤမုဒ်သည် ဖိုင်များကို ပဋိပက္ခအမှတ်အသားများ ရှိမရှိ စစ်ဆေးပြီး အနည်းဆုံး ဖိုင်တစ်ခုတွင် အမှတ်အသားတစ်ခုကို တွေ့ရှိပါက အမှားတစ်ခုကို ပြန်ပေးသည်၊ မည်သည့်ဖိုင်ကိုမျှ index မလုပ်ပါ၊ ပြင်ဆင်ရန် လိုအပ်သော ဖိုင်များစာရင်းကို ပြသသည်။ "git add --update" command နှင့်မတူဘဲ၊ ဤမုဒ်အသစ်သည် ပဋိပက္ခအခြေအနေတွင်ရှိသော ဖိုင်များကိုသာ လုပ်ဆောင်ပြီး ပဋိပက္ခနှင့် မသက်ဆိုင်သော ပြောင်းလဲထားသော ဖိုင်များကို လျစ်လျူရှုသည်။ ၎င်းသည် working directory တွင် မပြီးပြတ်သေးသော အခြားတည်းဖြတ်မှုများ ရှိနေသည့်တိုင် branch merge များကို ဘေးကင်းစွာ ပြီးမြောက်စေနိုင်သည် ("git add --update" command သည် working directory ရှိ ယခင်က ခြေရာခံထားသော ပြောင်းလဲထားသော ဖိုင်အားလုံးကို index ထဲသို့ ထည့်သွင်းသည်)။
  • branch များကို ပေါင်းစည်းခြင်းနှင့် commit များကို နှိုင်းယှဉ်သည့်အခါ မကြာသေးမီက အဖြစ်များသော commit များကို ရှာဖွေခြင်းအတွက် algorithm ကို အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ခြင်းဖြင့် repositories ကြီးများနှင့် အလုပ်လုပ်ခြင်းကို သိသိသာသာ မြန်ဆန်စေခဲ့သည်။ ယခုအခါ လုပ်ငန်းစဉ်သည် branch တစ်ခုနှင့်သာ သက်ဆိုင်သော commit များကို ထည့်သွင်းစဉ်းစားပြီး ပြောင်းလဲမှုမှတ်တမ်းကို နောက်ထပ်ဖြတ်သန်းရာတွင် အချိန်မဖြုန်းတီးဘဲ ဖြစ်နိုင်ချေရှိသော common ancestor အားလုံးကို ရှာဖွေတွေ့ရှိပြီးနောက် scan ကို ချက်ချင်းရပ်တန့်နိုင်စေပါသည်။ စမ်းသပ်ထားသော repository တစ်ခုတွင် ရှာဖွေမှုအမြန်နှုန်းသည် ပျမ်းမျှ ၂၀ ဆ တိုးလာပြီး အခြားတစ်ခုတွင် အမြန်နှုန်း ၇၀ ဆ ရောက်ရှိခဲ့သည်။ kernel ပါရှိသော repository တွင် "git merge-base --all v4.8 v4.9" command ကို လုပ်ဆောင်သောအခါ Linux ဖြတ်သန်းသွားလာသည့် ခြေလှမ်းအရေအတွက်သည် ၁၆၇၀၀၀ မှ ၃.၈၀၀၀ အထိ လျော့ကျသွားခဲ့သည်။
  • "--path-walk" ပြန်လည်ထုပ်ပိုးမှုမုဒ်ကို ဆာဗာအသုံးပြုရန်အတွက် လိုက်လျောညီထွေဖြစ်အောင် ပြုလုပ်ထားပြီး၊ directory tree တွင် object များကို ၎င်းတို့၏လမ်းကြောင်းဖြင့် အုပ်စုဖွဲ့ခြင်းဖြင့် ပိုမိုကျစ်လျစ်သော pack ဖိုင်များ ဖန်တီးနိုင်စေပါသည် (ဥပမာ၊ Fluent UI repository အတွက် "--path-walk" ကိုအသုံးပြုခြင်းသည် pack ဖိုင်အရွယ်အစားကို 558 MB မှ 164 MB သို့ လျှော့ချပေးသည်)။ ဗားရှင်းအသစ်သည် reachability bitmaps နှင့် delta islands များနှင့်အတူ "--path-walk" မုဒ်ကို အသုံးပြုခြင်းကို ပံ့ပိုးပေးပြီး Git hosting ဝန်ဆောင်မှုများမှ အလုပ်များကို မြန်ဆန်စေရန်နှင့် main repository မှ forks များကို ခွဲထုတ်ရန် အသုံးပြုပါသည်။
  • ကြီးမားသော repositories များတွင် မလိုအပ်သော တွက်ချက်မှုများကို ဖြစ်စေသော ပိတ်ဆို့မှုများကို ဖယ်ရှားလိုက်ပါပြီ- reftable သို့ ရေးသားသည့်အခါ မလိုအပ်သော ဖိုင်အခြေအနေစစ်ဆေးမှုများကို ဖယ်ရှားလိုက်ပါပြီ၊ packfile ထည့်သွင်းမှုအသစ်တိုင်းအတွက် စာရင်းကို ပြန်လည်စကင်ဖတ်ခြင်းကို ဖယ်ရှားလိုက်ပါပြီ၊ စုဆောင်းထားသော ဖျက်ခြင်းမှတ်တမ်းများစွာပါသည့် reftable လုပ်ဆောင်ချက်များကို အရှိန်မြှင့်လိုက်ပါပြီ၊ ဖိုင်လမ်းကြောင်းကန့်သတ်ချက်များကို သတ်မှတ်သည့်အခါ git diff စွမ်းဆောင်ရည်ကို အကောင်းဆုံးဖြစ်အောင် ပြုလုပ်ထားပါသည်။ ဤအကောင်းဆုံးဖြစ်အောင်ပြုလုပ်မှုများပြီးနောက်၊ ဖျက်ခြင်းအများအပြားပါသည့် reftable လုပ်ဆောင်ချက်များကို ၆၅ ဆ (၁၃ စက္ကန့်မှ ၀.၂ စက္ကန့်အထိ) အရှိန်မြှင့်လိုက်ပါပြီ၊ အညွှန်းတွင် အရာ ၅၀၀,၀၀၀ ပါသည့် Chromium repository ရှိ ပြဿနာရှိသော git diff command သည် ယခုအခါ ၈ မိနစ်အစား ၀.၀၇ စက္ကန့်ကြာပါသည်။
  • ပြောင်းလဲမှုများ၏ မှတ်တမ်းကို ပြန်လည်ရေးသားနိုင်စွမ်းကို ပေးစွမ်းသည့် စမ်းသပ်ဆဲ "git history" command ကို ရွေးချယ်ထားသော commit ကို ဖယ်ရှားပြီး ၎င်း၏ ဆင်းသက်လာမှုများကို parent commit နှင့် အလိုအလျောက် ချိတ်ဆက်ပေးသည့် "git history drop" လုပ်ဆောင်ချက်ဖြင့် အပ်ဒိတ်လုပ်ထားသည်။
  • ပြင်ပ repository တစ်ခုသို့ ပြောင်းလဲမှုများ ပေးပို့ပြီးသော local branch အုပ်စုများကို လုံခြုံစွာ ဖျက်ရန်အတွက် "git branch --delete-merged 'origin/*' 'topic-*'" command ကို ထည့်သွင်းထားသည်။ branch များနှင့် repositories များကို filter လုပ်ရန် wildcard များကို အသုံးပြုနိုင်သည်။ "--dry-run" flag ကို operation ကို အမှန်တကယ် မလုပ်ဆောင်ဘဲ ဖျက်ရန် candidates များကို ခွဲခြမ်းစိတ်ဖြာရန် အသုံးပြုနိုင်သည်။
  • ref များ ဖန်တီးခြင်း၊ ဖျက်ခြင်း၊ အမည်ပြောင်းခြင်းနှင့် အပ်ဒိတ်လုပ်ခြင်းအတွက် အဆင့်နိမ့်လုပ်ဆောင်ချက်များကို ပေါင်းစပ်ထားသည့် "git refs create|update|delete|rename" command ကို ထည့်သွင်းထားသည်။
  • "git bisect run" command မှာ အခုဆိုရင် "--reset-when-found=[ option" ပါဝင်လာပါပြီ။ ]", သည် ရှာဖွေမှုမစတင်မီ repository ကို အလိုအလျောက် အခြေအနေသို့ ပြန်ပေးသည် သို့မဟုတ် "git bisect reset" command ကို သီးခြားစီ run စရာမလိုဘဲ ပြဿနာရှိသော commit ကို active ထားခဲ့ပေးသည်။
  • 'git replay' command တွင် ယခုအခါ '--linearize' flag ပါရှိပြီး 'git rebase --no-rebase-merges' နှင့်ဆင်တူသော်လည်း working tree ကိုဝင်ရောက်ခြင်းမရှိဘဲ flat merge topology ကိုအသုံးပြုရန်ဖြစ်သည်။
  • "git log --follow" command သည် ယခုအခါ non-linear commit history များတွင် file renames များကို ခြေရာခံသည်၊ ဥပမာ subbranch များကို merge လုပ်သည့်အခါတွင်ဖြစ်သည်။ ယခုအခါ parent commit တစ်ခုချင်းစီအတွက် file path ကို သီးခြားမှတ်တမ်းတင်ထားပြီး၊ commit history ကို ဖြတ်သန်းသည့် အစီအစဉ်နှင့် မသက်ဆိုင်ပါ။
  • လက်ရှိအညွှန်းတွင် အသုံးမပြုသော ပြင်ပ repository မှ လိုအပ်သလို ဒေါင်းလုဒ်လုပ်ထားသော blob ကြီးများကို ဖယ်ရှားရန် "git repack -a --filter=blob:limit=1m --drop-filtered" command ကို အသုံးပြုနိုင်မှုကို ထည့်သွင်းထားသည်။ ဤ object များကို နောင်တွင် ဝင်ရောက်ကြည့်ရှုသည့်အခါ အလိုအလျောက် ပြန်လည်ဒေါင်းလုဒ်လုပ်ပါမည်။
  • အမြစ်များစွာ သီးခြားစီရှိသော ဂရပ်များအတွက် "git log --graph" command သည် ယခုအခါ မသက်ဆိုင်သော commit များကို ရှင်းရှင်းလင်းလင်း ခွဲခြားထားရန် indentation ကို ထည့်သွင်းပေးပါသည်။
  • "git push origin main" အစား "git push origin/main" ကို သတ်မှတ်ခြင်း သို့မဟုတ် "git branch --set-upstream-to=origin/main" အစား "git branch --set-upstream-to origin main" ကို သတ်မှတ်ခြင်းကဲ့သို့သော အဖြစ်များသော စာလုံးပေါင်းအမှားများကို ယခုအခါ ရှာဖွေတွေ့ရှိပြီး မှန်ကန်သော မျိုးကွဲကို မည်သို့အသုံးပြုရမည်ကို အရိပ်အမြွက်ပြသထားပါသည်။

source: opennet.ru

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