فیسبوک د منبع کوډ مدیریت نوی سیسټم Sapling معرفي کړ

فیسبوک (په روسیه کې منع شوی) د Sapling سرچینې کوډ مدیریت سیسټم خپور کړی چې د شرکت د داخلي پروژو په پراختیا کې کارول کیږي. د سیسټم هدف د پیژندل شوي نسخه کولو انٹرفیس چمتو کول دي چې کولی شي خورا لوی ذخیره کولو ته اندازه کړي چې په لسګونو ملیون فایلونه ، ژمنې او څانګې لري. د پیرودونکي کوډ په Python او Rust کې لیکل شوی، او د GPLv2 جواز لاندې خلاص دی.

په جلا توګه ، د سرور برخه د ذخیره کولو سره د مؤثره ریموټ کار لپاره رامینځته شوې او د ریپوزټرۍ د یوې برخې محلي ټوټې سره لکه د بشپړ ذخیره کولو سره کار کولو لپاره د مجازی فایل سیسټم لپاره (پراختیا کونکي ټول ذخیره ګوري ، مګر یوازې غوښتل شوي ډاټا کاپي کیږي. محلي سیسټم ته، کوم چې لاسرسی لري). د فیسبوک په زیربنا کې د دې اجزاو لپاره کوډ تراوسه خلاص شوی نه دی، مګر شرکت ژمنه کړې چې په راتلونکي کې به یې خپروي. په هرصورت، د مونونوک سرور پروټوټایپونه (په زنګ کې) او VFS EdenFS (په C++ کې) دمخه د نبات ذخیره کې موندل کیدی شي. دا اجزا اختیاري دي او د سیپلینګ پیرودونکي د کار کولو لپاره کافي دي ، کوم چې د ګیټ ذخیره کولو کلون کولو ملاتړ کوي ، د Git LFS پراساس سرورونو سره متقابل عمل کوي ، او د ګیټ کوربه لکه GitHub سره کار کوي.

د سیسټم اصلي نظر دا دی چې کله د ځانګړي سرور برخې سره اړیکه ونیسئ چې د ذخیره کولو ذخیره چمتو کوي ، ټول عملیات د فایلونو شمیر پورې اړه لري چې واقعیا په کوډ کې کارول کیږي چې پراختیا کونکی یې کار کوي ، او تکیه نه کوي. د ټول ذخیره ټوله اندازه. د مثال په توګه، یو پراختیا کونکی ممکن د خورا لوی ذخیره څخه د کوډ یوازې یوه کوچنۍ برخه وکاروي، او یوازې دا کوچنۍ برخه، د ټول ذخیره کولو پرځای، د هغه سیسټم ته لیږدول کیږي. کاري لارښود په متحرک ډول ډک شوی ، ځکه چې د ذخیره کولو فایلونو ته لاسرسی کیږي ، کوم چې له یوې خوا تاسو ته اجازه درکوي د کوډ برخې سره ستاسو د پام وړ کار ګړندی کړئ ، مګر له بلې خوا ، کله چې تاسو لومړی لاسرسی ومومئ ورو ورو لامل کیږي. نوي فایلونه او شبکې ته دوامداره لاسرسي ته اړتیا لري (په جلا توګه چمتو شوي او د ژمنو چمتو کولو آفلاین حالت).

د تطابق وړ ډیټا بارولو سربیره ، سیپلینګ اصلاح کول هم پلي کوي چې هدف یې د بدلونونو تاریخ سره د معلوماتو بار کولو کمول دي (د مثال په توګه ، د لینکس کرنل سره په ذخیره کې 3/4 ډیټا د بدلون تاریخ دی). د بدلون تاریخ سره په مؤثره توګه کار کولو لپاره ، د دې سره تړلي معلومات په یوه قطع شوي لید کې زیرمه شوي ، کوم چې تاسو ته اجازه درکوي له سرور څخه د ژمنې ګراف جلا برخې ډاونلوډ کړئ. پیرودونکی کولی شي له سرور څخه د څو ژمنو اړیکو په اړه د معلوماتو غوښتنه وکړي او یوازې د ګراف اړین برخه ډاونلوډ کړي.

دا پروژه په تیرو 10 کلونو کې رامینځته شوې او د ستونزو حل کولو لپاره رامینځته شوې کله چې د یوې ماسټر څانګې سره خورا لوی واحدي زیرمو ته د لاسرسي تنظیم کول ، په کوم کې چې د "ضمیدو" پرځای د "ریبیس" عملیاتو کارولو تمرین تمرین شوی و. په هغه وخت کې، د داسې ذخیره کولو سره د کار کولو لپاره هیڅ خلاص حل نه و، او د فیسبوک انجینرانو پریکړه وکړه چې د نوي نسخه کنټرول سیسټم رامینځته کړي چې د شرکت اړتیاوې پوره کړي، د دې پر ځای چې پروژې په کوچنیو زیرمو ویشل شي، چې دا به د ډیرو پیچلو انحصار مدیریت المل شي. (په یو وخت کې، د ورته ستونزې د حل لپاره، مایکروسافټ د GVFS پرت جوړ کړ). په پیل کې، فیسبوک د مرکوریل سیسټم کارولی و او د نبات پروژه په پیل کې د مرکوریل اضافه کولو په توګه رامینځته شوه. د وخت په تیریدو سره ، سیسټم د خپل پروتوکول ، ذخیره کولو ب formatې او الګوریتمونو سره په خپلواکه پروژه بدل شو ، کوم چې د Git ذخیره کولو سره د متقابل عمل وړتیا سره هم غزیدلی و.

د کار لپاره ، د "sl" کمانډ لاین افادیت وړاندیز شوی ، کوم چې د ګیټ او مرکوریل سره پیژندل شوي پراختیا کونکو ته پیژندل شوي ځانګړي مفکورې ، کاري جریان ، او یو انٹرفیس پلي کوي. په Sapling کې اصطلاحات او کمانډونه د Git څخه یو څه توپیر لري او مرکوریل ته نږدې دي. د مثال په توګه، "بک مارکونه" د څانګو پر ځای کارول کیږي (نوم شوي څانګې نه ملاتړ کیږي)، د ډیفالټ په واسطه، کله چې کلون / پل ترسره کوي، ټول ذخیره نه پورته کیږي، مګر یوازې اصلي څانګه، د ژمنو دمخه ټاګ نه شتون لري ( د سټیګینګ ساحه) د "git fetch" پرځای د "sl" کمانډ کارول کیږي، د "git pull" - "sl pull --rebase" پرځای، د "git checkout COMMIT" - "sl goto COMMIT" پرځای، د "git reflog" - "sl journal"، د "git checkout - FILE" پر ځای د بدلون بیرته راګرځولو لپاره "sl revert FILE" مشخص شوی، او "." د "HEAD" څانګې پیژندلو لپاره کارول کیږي. مګر په عموم کې، د څانګو عمومي مفکورې او کلون/پل/پش/کمیټ/ریبیس عملیات ساتل کیږي.

د نیالګیو توکی کټ د اضافي ځانګړتیاو په مینځ کې ، د "سمارټ لاګ" (سمارټ لاګ) ملاتړ څرګند دی ، کوم چې تاسو ته اجازه درکوي په لید ډول ستاسو د ذخیره کولو حالت ارزونه وکړئ ، خورا مهم معلومات روښانه کړئ او کوچني توضیحات فلټر کړئ. د مثال په توګه، کله چې تاسو د دلیلونو پرته د sl یوټیلیټ چلوئ، یوازې ستاسو خپل محلي بدلونونه ښودل کیږي (بهرني ړنګ شوي)، د بهرنیو څانګو حالت، بدل شوي فایلونه، او د ژمنې نوې نسخې ښودل شوي. سربیره پردې ، یو متقابل ویب انٹرفیس وړاندیز شوی ، کوم چې دا امکان ورکوي چې د سمارټ لاګ له لارې ګړندي حرکت وکړي ، ونې بدل کړي او ژمنې وکړي.

فیسبوک د منبع کوډ مدیریت نوی سیسټم Sapling معرفي کړ

په نبات کې یو بل د پام وړ پرمختګ د غلطیو د حل او تجزیه کولو پروسې ساده کول، او پخواني حالت ته بیرته راستنیدل دي. د مثال په توګه، د "sl undo"، "sl redo"، "sl uncommit" او "sl unamend" کمانډونه د ډیری عملیاتو د بیرته راګرځولو لپاره وړاندیز کیږي، "sl hide" او "sl unhide" کمانډونه په لنډمهاله توګه د ژمنو پټولو لپاره، او د متقابل نیویګیشن له لارې. زاړه حالتونه او ټاکلې نقطې ته بیرته راستانه شي "sl undo -i کمانډ". نیالګي د ژمنې سټیک مفهوم هم ملاتړ کوي ، کوم چې تاسو ته اجازه درکوي د پیچلي فعالیت په ماتولو سره د کوچني او ډیر پوهیدو وړ زیاتیدونکي بدلونونو (له بنسټیز چوکاټ څخه بشپړ شوي ب featuresې ته) په ماتولو سره د ګام په ګام بیاکتنه تنظیم کړئ.

د نیالګیو لپاره ډیری اضافې چمتو شوي ، پشمول د بدلونونو بیاکتنې لپاره د بیاکتنې سټیک انٹرفیس (د GPLv2 لاندې کوډ) ، کوم چې تاسو ته اجازه درکوي په GitHub کې د پلچ غوښتنې پروسس کړئ او د بدلونونو سټیک لید وکاروئ. برسېره پردې، د VSCode او TextMate مدیرانو سره د یوځای کولو لپاره اضافه شوي، او همدارنګه د ISL (Interactive SmartLog) انٹرفیس او سرور پلي کول خپاره شوي.

سرچینه: opennet.ru

Add a comment