Facebook системаи нави идоракунии коди сарчашмавии Sapling -ро муаррифӣ кард

Фейсбук (дар Федератсияи Русия мамнӯъ) системаи идоракунии сарчашмаи Sapling-ро нашр кард, ки дар таҳияи лоиҳаҳои дохилии ширкат истифода мешавад. Ҳадафи система таъмин кардани интерфейси идоракунии версияи шинос аст, ки метавонад барои анборҳои хеле калон, ки даҳҳо миллион файлҳо, ӯҳдадориҳо ва филиалҳоро фаро мегиранд, миқёс кунад. Рамзи муштарӣ дар Python ва Rust навишта шудааст ва таҳти иҷозатномаи GPLv2 кушода аст.

Қисми сервер барои кори самараноки фосилавӣ бо анборҳо ва системаи файлии виртуалӣ барои кор бо порчаи маҳаллии як қисми анбор ҳамчун анбори мукаммал таҳия шудааст (таҳиягар тамоми анборро мебинад, аммо танҳо маълумоти зарурӣ, ки дастрас аст) ба системаи маҳаллӣ нусхабардорӣ карда мешавад). Рамзи ин ҷузъҳои дар инфрасохтори Facebook истифодашаванда ҳанӯз кушода нашудааст, аммо ширкат ваъда додааст, ки дар оянда онро нашр хоҳад кард. Аммо, дар айни замон дар анбори Sapling шумо аллакай прототипҳои сервери Mononoke (дар Rust) ва VFS EdenFS (дар C++) пайдо карда метавонед. Ин ҷузъҳо ихтиёрӣ ҳастанд ва муштарии Sapling барои кор кофӣ аст, ки клонкунии анбори Git, ҳамкорӣ бо серверҳо дар асоси Git LFS ва кор бо сайтҳои хостинги git ба монанди GitHub -ро дастгирӣ мекунад.

Идеяи асосии система дар он аст, ки ҳангоми ҳамкорӣ бо як қисми сервери махсус, ки нигоҳдории анборро таъмин мекунад, ҳама амалиётҳо вобаста ба шумораи файлҳои воқеан дар коди коркардкунанда истифодашаванда миқёс карда мешаванд ва аз он вобаста нестанд. андозаи умумии тамоми анбор. Масалан, таҳиякунанда метавонад танҳо як қисми ками кодро аз анбори хеле калон истифода барад ва танҳо он қисми хурд ба системаи худ интиқол дода мешавад, на тамоми анбор. Феҳристи корӣ ба таври динамикӣ пур карда мешавад, зеро дастрасии файлҳо аз анбор аст, ки ин аз як тараф ба шумо имкон медиҳад, ки кор бо қисми коди худ ба таври назаррас суръат бахшед, аммо аз тарафи дигар боиси суст шудани дастрасии файлҳои нав барои бори аввал аст ва дастрасии доимиро ба шабака талаб мекунад (режими алоҳида ва офлайнӣ барои омода кардани ӯҳдадориҳо).

Илова ба боркунии маълумотҳои мутобиқшавӣ, Sapling инчунин оптимизатсияҳоеро амалӣ мекунад, ки ба кам кардани боркунии иттилоот бо таърихи тағирот нигаронида шудаанд (масалан, 3/4 маълумот дар репозиторий бо ядрои Linux таърихи тағирот аст). Барои самаранок кор кардан бо таърихи тағирот, маълумоти марбут ба он дар намояндагии сегментӣ нигоҳ дошта мешавад, ки ба шумо имкон медиҳад қисмҳои алоҳидаи графики супоридашударо аз сервер зеркашӣ кунед. Мизоҷ метавонад аз сервер маълумотро дар бораи муносибати байни якчанд супоришҳо дархост кунад ва танҳо қисми зарурии графикро зеркашӣ кунад.

Лоиҳа дар тӯли 10 соли охир таҳия шудааст ва барои ҳалли мушкилот ҳангоми ташкили дастрасӣ ба анборҳои хеле калони монолитӣ бо як шохаи асосӣ, ки ба ҷои "якҷоя кардан" амалиёти "rebase" истифода мешуд, таҳия шудааст. Он вақтҳо барои кор бо чунин анборҳо ҳалли кушод вуҷуд надоштанд ва муҳандисони Facebook тасмим гирифтанд, ки ба ҷои тақсим кардани лоиҳаҳо ба анборҳои хурд, ки боиси мураккабии корҳо мегардад, системаи нави идоракунии версияи наверо, ки ба талаботи ширкат ҷавобгӯ бошад, эҷод кунанд. идоракунии вобастагӣ (дар як вақт барои ҳалли мушкилоти шабеҳ, Microsoft қабати GVFS-ро таъсис дод). Дар аввал, Facebook системаи Mercurial ва лоиҳаи Sapling -ро дар марҳилаи аввал истифода бурд, ки ҳамчун илова ба Mercurial таҳия шудааст. Бо гузашти вақт, система ба як лоиҳаи мустақил бо протокол, формати нигоҳдорӣ ва алгоритмҳои худ табдил ёфт, ки он инчунин бо қобилияти ҳамкорӣ бо анбори Git васеъ карда шуд.

Барои кор, утилитаи сатри фармони "sl" пешниҳод карда мешавад, ки мафҳумҳои маъмулӣ, ҷараёнҳои корӣ ва интерфейси ба таҳиягарони бо Git ва Mercurial ошно шиносро амалӣ мекунад. Истилоҳҳо ва фармонҳо дар Sapling аз Git каме фарқ мекунанд ва ба Mercurial наздиктаранд. Масалан, ба ҷои филиалҳо, "хатчӯбҳо" истифода мешаванд (шохаҳои номбаршуда дастгирӣ намешаванд), ба таври нобаёнӣ, ҳангоми иҷро кардани клон/кабулкунӣ на тамоми анбор, балки танҳо шохаи асосӣ, аломатгузории пешакии ӯҳдадориҳо вуҷуд надорад ( майдони staging), ба ҷои "git fetch" фармони "sl" истифода мешавад pull", ба ҷои "git pull" - "sl pull -rebase", ба ҷои "git checkout COMMIT" - "sl goto COMMIT", ба ҷои "git reflog" - "sl journal", барои бекор кардани тағирот ба ҷои "git checkout - FILE" "sl revert FILE" нишон дода шудааст ва "." барои муайян кардани шохаи "HEAD" истифода мешавад. Аммо дар маҷмӯъ, мафҳумҳои умумии шохаҳо ва амалиёти клон/каш/пуш/commit/rebase нигоҳ дошта мешаванд.

Дар байни хусусиятҳои иловагии маҷмӯаи абзори Sapling, дастгирии "smartlog" фарқ мекунад, ки ба шумо имкон медиҳад вазъи анбори худро ба таври визуалӣ арзёбӣ кунед, муҳимтарин иттилоотро қайд кунед ва ҷузъиёти номуҳимро филтр кунед. Масалан, вақте ки шумо утилитаи sl-ро бидуни далелҳо иҷро мекунед, дар экран танҳо тағироти маҳаллии шумо нишон дода мешаванд (дигарҳо кам карда мешаванд), ҳолати шохаҳои беруна, файлҳои тағирёфта ва версияҳои нави ӯҳдадориҳо нишон дода мешаванд. Илова бар ин, интерфейси интерактивии веб пешниҳод карда мешавад, ки имкон медиҳад, ки зуд тавассути гузориши интеллектуалӣ паймоиш кунед, дарахтро тағир диҳед ва ӯҳдадор шавед.

Facebook системаи нави идоракунии коди сарчашмавии Sapling -ро муаррифӣ кард

Боз як такмили назаррас дар Sapling ин аст, ки он ислоҳ ва ҳалли хатогиҳо ва баргаштан ба ҳолати қаблиро осон мекунад. Масалан, фармонҳои "sl undo", "sl redo", "sl uncommit" ва "sl unamend" барои баргардонидани бисёр амалиётҳо пешниҳод мешаванд, фармонҳои "sl hide" ва "sl unhide" барои муваққатан пинҳон кардани супоришҳо истифода мешаванд; ва барои паймоиши интерактивӣ тавассути ҳолати кӯҳна ва баргаштан ба нуқтаи муайяншуда бо фармони "sl undo -i command". Sapling инчунин консепсияи стекро дастгирӣ мекунад, ки ба шумо имкон медиҳад баррасиҳои зина ба зина тавассути шикастани функсияҳои мураккаб ба маҷмӯи тағиротҳои афзояндаи хурдтар ва фаҳмотар (аз чаҳорчӯбаи асосӣ то функсияи анҷомшуда) ташкил карда шавад.

Якчанд иловаҳо барои Sapling омода карда шудаанд, аз ҷумла интерфейси ReviewStack барои баррасии тағирот (рамз дар зери GPLv2), ки ба шумо имкон медиҳад дархостҳои ҷалбро дар GitHub коркард кунед ва намуди стекро аз тағирот истифода баред. Илова бар ин, иловаҳо барои ҳамгироӣ бо муҳаррирони VSCode ва TextMate, инчунин татбиқи интерфейси ISL (Interactive SmartLog) ва сервер нашр шудаанд.

Манбаъ: opennet.ru

Илова Эзоҳ