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

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

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

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

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

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

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

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

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

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

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

Манбаъ: opennet.ru

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster