ፌስቡክ አዲስ ምንጭ ኮድ አስተዳደር ስርዓት Sapling አስተዋውቋል

ፌስቡክ (በሩሲያ ፌዴሬሽን ውስጥ የተከለከለ) የውስጥ ኩባንያ ፕሮጀክቶችን ለማዳበር ጥቅም ላይ የዋለውን የሳፕሊንግ ምንጭ ቁጥጥር ስርዓት አሳተመ. ስርዓቱ በአስር ሚሊዮኖች የሚቆጠሩ ፋይሎችን፣ ሰነዶችን እና ቅርንጫፎችን የሚሸፍኑ በጣም ትልቅ ማከማቻዎችን ሊመዘን የሚችል የታወቀ የስሪት መቆጣጠሪያ በይነገጽ ለማቅረብ ያለመ ነው። የደንበኛ ኮድ በ Python እና Rust የተፃፈ ነው፣ እና በGPLv2 ፍቃድ ስር ነው።

የአገልጋይ ክፍል ከማከማቻዎች ጋር ቀልጣፋ የርቀት ስራ ለመስራት ለብቻው ተዘጋጅቷል እና ከማከማቻው የተወሰነ ክፍል ጋር እንደ ሙሉ ማከማቻ ለመስራት ምናባዊ የፋይል ስርዓት (ገንቢው ሙሉውን ማከማቻ ያያል ፣ ግን የሚፈለገው ውሂብ ብቻ ነው የሚደርሰው)። ወደ አካባቢያዊ ስርዓት ይገለበጣል). በፌስቡክ መሠረተ ልማት ውስጥ ጥቅም ላይ የሚውሉት የነዚህ አካላት ኮድ እስካሁን ክፍት ባይሆንም ኩባንያው ወደፊት ለማሳተም ቃል ገብቷል። ነገር ግን፣ በአሁኑ ጊዜ በሳፕሊንግ ማከማቻ ውስጥ የሞኖኖክ አገልጋይ (በ Rust) እና ቪኤፍኤስ ኤደንኤፍኤስ (በC++) ያሉ ፕሮቶታይፖችን ማግኘት ይችላሉ። እነዚህ ክፍሎች አማራጭ ናቸው እና የሳፕሊንግ ደንበኛ ለመስራት በቂ ነው፣ ይህም የ Git ማከማቻዎችን ክሎኒንግ ይደግፋል፣ በ Git LFS ላይ ተመስርተው ከአገልጋዮች ጋር መስተጋብር መፍጠር እና እንደ GitHub ካሉ git ማስተናገጃ ጣቢያዎች ጋር አብሮ መስራት።

የስርዓቱ ዋና ሀሳብ የማጠራቀሚያውን ማከማቻ ከሚያቀርበው ልዩ የአገልጋይ ክፍል ጋር በሚገናኝበት ጊዜ ሁሉም ስራዎች የሚመዘኑት ገንቢው በሚሰራበት ኮድ ውስጥ በትክክል ጥቅም ላይ በሚውሉት የፋይሎች ብዛት ላይ በመመስረት ነው እና በዚህ ላይ የተመካ አይደለም የጠቅላላው ማከማቻ ጠቅላላ መጠን. ለምሳሌ፣ አንድ ገንቢ በጣም ትልቅ ከሆነው ማከማቻ ትንሽ ክፍል ብቻ ነው የሚጠቀመው እና ያ ትንሽ ክፍል ብቻ ወደ ስርዓቱ የሚሸጋገር ይሆናል እንጂ አጠቃላይ ማከማቻው አይደለም። የስራ ማውጫው ከማከማቻው ውስጥ ፋይሎች ሲደርሱ በተለዋዋጭ ተሞልቷል, ይህም በአንድ በኩል, ከኮዱ ክፍል ጋር ስራን በከፍተኛ ሁኔታ ለማፋጠን ያስችላል, በሌላ በኩል ግን አዲስ ፋይሎችን ሲደርሱ ወደ መቀዛቀዝ ያመራል. ለመጀመሪያ ጊዜ እና ወደ አውታረ መረቡ የማያቋርጥ መዳረሻ ይፈልጋል (በተለየ የቀረበ እና ከመስመር ውጭ ሁኔታዎችን ለማዘጋጀት)።

ከተለዋዋጭ ዳታ ጭነት በተጨማሪ ሳፕሊንግ የመረጃን ጭነት ከለውጦች ታሪክ ጋር ለመቀነስ ያለመ ማመቻቸትን ይተገበራል (ለምሳሌ ከሊኑክስ ከርነል ጋር ባለው ማከማቻ ውስጥ ካለው መረጃ 3/4 የለውጥ ታሪክ ነው)። ከለውጦች ታሪክ ጋር ውጤታማ በሆነ መልኩ ለመስራት ከሱ ጋር የተገናኘው ውሂብ በተከፋፈለ ውክልና ውስጥ ተከማችቷል ይህም የግራፊክስ ግራፍ ነጠላ ክፍሎችን ከአገልጋዩ እንዲያወርዱ ያስችልዎታል። ደንበኛው በበርካታ ተግባራት መካከል ስላለው ግንኙነት ከአገልጋዩ መረጃ መጠየቅ እና አስፈላጊውን የግራፉን ክፍል ብቻ ማውረድ ይችላል።

ፕሮጀክቱ ባለፉት 10 ዓመታት ውስጥ እየተገነባ ሲሆን በአንድ ማስተር ቅርንጫፍ አማካኝነት በጣም ግዙፍ የሆኑ የሞኖሊቲክ ማከማቻዎችን በማደራጀት ችግሮችን ለመፍታት የተፈጠረ ሲሆን ይህም "መዋሃድ" ሳይሆን "ዳግም ቤዝ" ኦፕሬሽንን ይጠቀማል. በዚያን ጊዜ ከእንደዚህ ዓይነት ማከማቻዎች ጋር ለመስራት ምንም አይነት ክፍት መፍትሄዎች አልነበሩም, እና የፌስቡክ መሐንዲሶች ፕሮጀክቶችን ወደ ትናንሽ ማከማቻዎች ከመከፋፈል ይልቅ የኩባንያውን ፍላጎት የሚያሟላ አዲስ ስሪት ቁጥጥር ስርዓት ለመፍጠር ወሰኑ, ይህም ወደ ውስብስብነት ይመራዋል. የጥገኝነት አስተዳደር (በአንድ ጊዜ, ተመሳሳይ ችግር ለመፍታት, ማይክሮሶፍት የ GVFS ንብርብር ፈጠረ). መጀመሪያ ላይ ፌስቡክ የመርኩሪያል ስርዓትን እና የሳፕሊንግ ፕሮጄክትን በመጀመርያ ደረጃ የመርኩሪያል ተጨማሪነት ተጠቅሟል። ከጊዜ በኋላ ስርዓቱ የራሱ ፕሮቶኮል፣ የማከማቻ ፎርማት እና ስልተ-ቀመሮች ያለው ወደ ገለልተኛ ፕሮጀክት ተለወጠ፣ ይህ ደግሞ ከጂት ማከማቻዎች ጋር የመግባባት ችሎታ ተስፋፋ።

ለስራ, የተለመዱ ጽንሰ-ሐሳቦችን, የስራ ፍሰቶችን እና ከ Git እና Mercurial ጋር ለሚያውቁ ገንቢዎች የሚታወቅ በይነገጽን የሚተገበር የትእዛዝ መስመር መገልገያ "sl" ቀርቧል. በሳፕሊንግ ውስጥ ያሉት ቃላቶች እና ትዕዛዞች ከጊት ትንሽ ለየት ያሉ እና ወደ ሜርኩሪል ቅርብ ናቸው። ለምሳሌ ፣ ከቅርንጫፎች ይልቅ ፣ “ዕልባቶች” ጥቅም ላይ ይውላሉ (ስም የተሰየሙ ቅርንጫፎች አይደገፉም) ፣ በነባሪ ፣ ክሎኔን / ጎተቱን ሲፈጽም ፣ አጠቃላይ ማከማቻው አልተጫነም ፣ ግን ዋናው ቅርንጫፍ ብቻ ነው ፣ ምንም የመጀመሪያ ምልክት የለም የማቆሚያ ቦታ)፣ ከ “git fetch” ይልቅ የ “sl” ትዕዛዝ ፑል ጥቅም ላይ ይውላል፣ ከ “git pull” - “sl pull-rebase” ይልቅ፣ “git checkout COMMIT” - “sl goto COMMIT” ከማለት ይልቅ። "git reflog" - "sl ጆርናል" ከ "git checkout - FILE" ይልቅ ለውጥን ለመሰረዝ "sl revert FILE" ተገልጿል እና "" የ"HEAD" ቅርንጫፍን ለመለየት ጥቅም ላይ ይውላል. ነገር ግን በአጠቃላይ የቅርንጫፎች አጠቃላይ ጽንሰ-ሀሳቦች እና ክሎኔን / መጎተት / መግፋት / ቁርጠኝነት / ዳግም ቤዝ ኦፕሬሽኖች ተጠብቀዋል.

የሳፕሊንግ መሣሪያ ኪት ተጨማሪ ባህሪያት መካከል ለ "smartlog" ድጋፍ ጎልቶ ይታያል, ይህም የማጠራቀሚያዎን ሁኔታ በምስላዊ ሁኔታ ለመገምገም, በጣም አስፈላጊ የሆኑትን መረጃዎች ለማጉላት እና አስፈላጊ ያልሆኑ ዝርዝሮችን ለማጣራት ያስችላል. ለምሳሌ፣ የ sl utilityን ያለ ክርክር ሲያሄዱ፣ የእራስዎ የአካባቢ ለውጦች ብቻ በስክሪኑ ላይ ይታያሉ (ሌሎች የተቀነሱ)፣ የውጪ ቅርንጫፎች ሁኔታ፣ የተቀየሩ ፋይሎች እና አዲስ የፈፀሙ ስሪቶች ይታያሉ። በተጨማሪም ፣ በይነተገናኝ የድር በይነገጽ ቀርቧል ፣ ይህም በስማርት ሎግ በፍጥነት ለማሰስ ፣ ዛፍን ለመለወጥ እና ለመፈፀም ያስችላል።

ፌስቡክ አዲስ ምንጭ ኮድ አስተዳደር ስርዓት Sapling አስተዋውቋል

በሳፕሊንግ ውስጥ ሌላ ጉልህ መሻሻል ስህተቶችን ማስተካከል እና መፍታት እና ወደ ቀድሞ ሁኔታ መመለስ ቀላል ያደርገዋል። ለምሳሌ “sl undo”፣ “sl redo”፣ “sl uncommit” እና “sl unnamend” የሚባሉት ትእዛዞች ብዙ ስራዎችን ወደ ኋላ ለመመለስ ቀርበዋል፤ “sl hide” እና “sl unhide” የሚሉት ትዕዛዞች ለጊዜው ወንጀልን ለመደበቅ ያገለግላሉ። እና በቀድሞ ግዛቶች ውስጥ በይነተገናኝ አሰሳ እና "sl undo -i ትዕዛዝ" በሚለው ትዕዛዝ ወደተገለጸው ነጥብ ይመለሱ. ሳፕሊንግ የስብስብ ቁልል ጽንሰ-ሀሳብን ይደግፋል ፣ ይህም ውስብስብ ተግባራትን ወደ ትናንሽ ፣ የበለጠ ለመረዳት ወደሚቻሉ ጭማሪ ለውጦች (ከመሠረታዊ ማዕቀፍ እስከ የተጠናቀቀ ተግባር) በመጣስ ደረጃ-በደረጃ ግምገማዎችን እንዲያደራጁ ያስችልዎታል።

ለሳፕሊንግ ብዙ ተጨማሪዎች ተዘጋጅተዋል፣ ለውጦችን ለመገምገም የ ReviewStack በይነገጽ (በGPLv2 ስር ያለ ኮድ)፣ ይህም በ GitHub ላይ የመሳብ ጥያቄዎችን እንዲያካሂዱ እና የለውጦችን ቁልል እይታ ለመጠቀም ያስችላል። በተጨማሪም, ተጨማሪዎች ከ VSCode እና TextMate አርታዒዎች ጋር እንዲዋሃዱ ታትመዋል, እንዲሁም የ ISL (በይነተገናኝ ስማርት ሎግ) በይነገጽ እና አገልጋይ ትግበራ.

ምንጭ: opennet.ru

አስተያየት ያክሉ