Git 2.31 бөлүштүрүлгөн булак башкаруу системасы азыр жеткиликтүү. Git эң популярдуу, ишенимдүү жана жогорку өндүрүмдүү версияларды башкаруу тутумдарынын бири, тармакташуу жана бириктирүү боюнча ийкемдүү сызыктуу эмес өнүгүү куралдарын камсыз кылат. Тарыхтын бүтүндүгүн жана ретроактивдүү өзгөрүүлөргө каршылыгын камсыз кылуу үчүн ар бир милдеттенмеде мурунку тарыхтын имплициттүү хэштери колдонулат, ошондой эле иштеп чыгуучулардын санариптик колтамгалары менен жеке тегдерди жана милдеттенмелерди тастыктоого болот;
Мурунку релизге салыштырмалуу жаңы версияда 679 иштеп чыгуучунун катышуусунда даярдалган 85 өзгөртүү камтылган, анын ичинен 23ү биринчи жолу иштеп чыгууга катышкан. Негизги инновациялар:
- Cronду колдобогон системаларда мезгил-мезгили менен иштөөгө мүмкүндүк берген "git care" буйругу кошулду. Мисалы, жаңы буйрукту колдонуп, сиз репозиторийдин таңгактоо процессинин мезгил-мезгили менен иштөөсүн уюштура аласыз, андыктан ар кандай буйруктарды аткарып жатканда таңгактоо автоматтык түрдө аткарылганда репозиторий кулпуланганга чейин күтүүнүн кереги жок. “Git care” буйругу интерактивдүү сеансты бөгөтпөстөн, фондо репозиторийдин оптималдуу түзүмүн кармап туруу үчүн оптималдаштырууну жана операцияларды аткарууга мүмкүндүк берет – саатына бир жолу алыскы репозиторийден жаңы объекттерди проактивдүү жүктөө жана жаңыртуу боюнча иштер аткарылат. тапшырма графиги менен файлды жазыңыз жана репозиторийди таңгактоо процесси күн сайын түнү башталат.
- Пакет файлдары үчүн дискте тескери индексти (ревиндекс) сактоо үчүн кошумча колдоо. Эске салсак, Git бардык маалыматтарды объекттер түрүндө сактайт, алар өзүнчө файлдарда жайгашкан. Репозиторий менен иштөөнүн натыйжалуулугун жогорулатуу үчүн объекттер пакеттик файлдарга кошумча жайгаштырылат, аларда маалымат бири-биринен кийинки объекттердин агымы түрүндө берилет (ушуга окшош формат git fetch жана git push менен объекттерди өткөрүп жатканда колдонулат. буйруктар). Ар бир пачка файлы үчүн индекс файлы (.idx) түзүлөт, ал объекттин идентификаторунун жардамы менен берилген объект сакталган пакет файлындагы офсетті тез аныктоого мүмкүндүк берет. Git 2.31де киргизилген тескери индекс (.rev) пакеттик файлда объекттин жайгашуусу жөнүндө маалыматтан объекттин идентификаторун аныктоо процессин оптималдаштырууга багытталган.
Мурда мындай конвертация пакет файлын талдоо учурунда тез аткарылчу жана эстутумда гана сакталып турган, бул окшош индекстерди кайра колдонууга мүмкүндүк бербейт жана индексти ар бир жолу түзүүгө мажбур кылды. Индекс түзүү операциясы объект-позиция жуптарынын массивдерин түзүүгө жана аны позициясы боюнча сорттоого байланыштуу, бул чоң пакет файлдары үчүн көп убакытты талап кылышы мүмкүн.
Мисалы, түз индексти колдонгон объекттердин мазмунун көрсөтүү операциясы объекттердин өлчөмүн көрсөтүү операциясына караганда 62 эсе тезирээк болгон, алар үчүн позициядан объектке маалымат индекстелбеген. Тескери индексти колдонгондон кийин, бул операциялар болжол менен бирдей убакытты талап кыла баштады. Кайтарым индекстер ошондой эле дисктен даяр маалыматтарды түздөн-түз өткөрүп берүү менен алып келүү жана түртүү буйруктарын аткарууда объектти жөнөтүү операцияларын тездетүүгө мүмкүндүк берет. Демейки боюнча, тескери индекстер аларды түзүү үчүн түзүлбөйт, сиз “git config pack.writeReverseIndex true” жөндөөсүн иштетип, андан кийин “git repack -Ad” буйругу менен репозиторийди топтошуңуз керек.
- Коммитеттер жөнүндө маалыматка жетүүнү оптималдаштыруу үчүн колдонулган Commit-график файл форматындагы көрүнүштүн негизинде кошумча өндүрүмдүүлүктү оптималдаштыруу, милдеттенмелер менен кошумча операцияларды тездетүү үчүн колдонулушу мүмкүн болгон милдеттенмелерди түзүүнүн номери жөнүндө жаңы маалыматтар.
- Жаңы репозиторийлерде (init.defaultBranch жөндөөсү) демейки негизги бутактын атын жокко чыгаруу мүмкүнчүлүгү кеңейтилди. Тышкы репозиторийлерге киргенде, git HEAD көрсөткөн бутакчаны алууга аракет кылат, б.а., эгерде тышкы болсо Server демейки шартта "main" бутагын колдонот, анда "git clone" операциясы "main"ди жергиликтүү түрдө алууга аракет кылат. Git 2.31 версиясында бул типтеги алууга колдоо эми бош репозиторийлер үчүн да ишке ашырылган. Мисалы, биринчи патчтарды кошуудан мурун жаңы репозиторийин жергиликтүү түрдө клондоштурганда, жергиликтүү көчүрмөдө эми тышкы орнотулган версиясы камтылат. сервер Демейки башкы бутактын аталышы.
- Объекттердин өлчөмү боюнча кыскача маалымат берүү үчүн "git rev-list" буйругуна --disk-usage опциясы кошулду.
- Бириктирүү серверине келе жаткан өзгөртүүнү күтүү менен, атын өзгөртүүнү аныктоо кыйла оптималдаштырылды.
- Мурдагы PCRE1 кадимки туюнтма китепканасын колдоо токтотулду.
- Хеширлөө алгоритмине карабастан, кыскартылган шилтемелерди колдонууга күч менен тыюу салууга болот. Тыюу core.abbrev параметрине “жок” маанисин ыйгаруу менен иштетилет.
- Салыштырмалуу же абсолюттук жолдор чыгарылышын ачык көрсөтүү үчүн "git rev-parse" буйругуна "--path-format=(absolute|relative)" опциясы кошулду.
- Bash аяктоо скрипттери өзүңүздүн "git" чакан буйруктарыңыз үчүн аяктоо эрежелерин кошууну жеңилдетет.
- Стандарттык киргизүү агымынан шилтемелерди окуу үчүн "git bundle" буйругуна --stdin опциясы кошулду.
- "git log" буйругуна жаңы вариант кошулду: "--diff-merges=" "
- Кайталанма чыгарууну жок кылуу үчүн "git ls-files" буйругуна "--deduplicatecan" опциясы кошулду.
- Бир катар милдеттерди алып салуу үчүн жаңы маскалар кошулду - " ^!" Жана " ^- "
- Салыштырылган диапазондун бир тарабын гана көрсөтүү үчүн "git range-diff" буйругуна "--left-only" жана "--right-only" опциялары кошулду.
- "git diff" жана "git log" буйруктарына --skip-to= опциялары кошулду " жана "— айлантуудан = » өтүү же башталгыч жолдордун аягына өтүү.
- "git difftool" буйругуна "--skip-to=" опциясы кошулду » үзүлгөн сеансты туш келди жолдон улантуу.
- Иштеп чыгуучулардын ортосундагы чыр-чатактарды чечүүнүн негизги принциптерин аныктаган Жүрүм-турум кодекси 2.0 версиясына жаңыртылган (мурда 1.4 версиясы колдонулган).
Source: opennet.ru
