Sapling, isang Git-compatible na source code control system

sapling

Binibigyang-diin ng Sapling ang kadalian ng paggamit habang sumu-scale sa pinakamalaking repositoryo sa mundo.

Inilantad ang Facebook sa pamamagitan ng isang blog post ang source code management system Pagpapayat ginagamit sa pagbuo ng mga panloob na proyekto ng kumpanya. Ang sistema naglalayong magbigay ng interface ng kontrol ng bersyon pamilyar na maaaring mag-scale sa napakalaking repository na sumasaklaw sa sampu-sampung milyong mga file, commit, at branch.

Ang pangunahing ideya ng system ay sa pamamagitan ng pakikipag-ugnayan sa isang espesyal na bahagi ng server na nagbibigay ng imbakan ng imbakan, lahat ng sukat ng operasyon batay sa bilang ng mga file aktwal na ginamit sa code na pinagtatrabahuhan ng developer, at hindi nakadepende sa kabuuang sukat ng buong repositoryo.

Halimbawa, ang isang developer ay maaaring gumamit lamang ng isang maliit na bahagi ng code mula sa isang napakalaking repositoryo, at ang maliit na bahagi lamang na ito, at hindi ang buong repositoryo, ang ililipat sa kanilang system. Ang gumaganang direktoryo ay dynamic na napuno, dahil ang mga file ng repositoryo ay na-access, na, sa isang banda, ay nagbibigay-daan sa iyo upang makabuluhang pabilisin ang trabaho gamit ang iyong bahagi ng code, ngunit sa kabilang banda, pinapabagal ito kapag na-access mo ito para sa sa unang pagkakataon sa mga bagong file at nangangailangan ng patuloy na pag-access sa network (ibinigay nang hiwalay at offline-commit preparation mode).

Bilang karagdagan sa adaptive data loading, Nagpapatupad din ang Sapling ng mga pag-optimize na naglalayong bawasan ang pagkarga ng impormasyon na may kasaysayan ng mga pagbabago. (halimbawa, 3/4 ng data sa isang repository na may kernel ng Linux ay kasaysayan ng pagbabago).

Upang gumana nang epektibo sa kasaysayan ng pagbabago, ang data na nauugnay dito ay iniimbak sa isang naka-segment na view, na nagbibigay-daan sa iyong mag-download ng magkakahiwalay na bahagi ng commit graph mula sa server. Ang kliyente ay maaaring humingi ng impormasyon sa server tungkol sa kaugnayan ng ilang mga kumpirmasyon at i-download lamang ang kinakailangang bahagi ng graph.

Ang proyekto ay binuo sa nakalipas na 10 taon at nilikha upang malutas ang mga problema kapag nag-a-access ng napakalaking monolithic repository na may master branch, kung saan ang pagsasanay ng paggamit ng "rebase" na operasyon sa halip na "merge" ay isinagawa.

Sa oras na iyon, walang bukas na mga solusyon para sa pagtatrabaho sa mga naturang repository, at nagpasya ang mga inhinyero ng Facebook na lumikha ng isang bagong bersyon ng control system na tutugon sa mga pangangailangan ng kumpanya, sa halip na hatiin ang mga proyekto sa maliliit na repositoryo, na hahantong sa mas kumplikadong pamamahala ng dependency ( sa isang pagkakataon, upang malutas ang isang katulad na problema, nilikha ng Microsoft ang GVFS layer).

Noong una, ginamit ng Facebook ang Mercurial system at ang proyekto ng Sapling ay unang binuo bilang karagdagan sa Mercurial. Sa paglipas ng panahon, ang sistema ay naging isang malayang proyekto na may sariling protocol, format ng imbakan, at mga algorithm, na pinalawak din nang may kakayahang makipag-ugnayan sa mga repositoryo ng Git.

Para sa trabaho, ang command line utility na "sl" ay iminungkahi, na nagpapatupad ng mga tipikal na konsepto, workflow, at interface na pamilyar sa mga developer na pamilyar sa Git at Mercurial. Ang terminolohiya at mga utos sa Sapling ay bahagyang naiiba sa Git at mas malapit sa Mercurial.

Kabilang sa mga karagdagang tampok ng Sapling, itinatampok ang suporta para sa "smart registration" (smartlog), na nagbibigay-daan sa iyong biswal na masuri ang katayuan ng iyong imbakan, i-highlight ang pinakamahalagang impormasyon at i-filter ang mga maliliit na detalye. Halimbawa, kapag pinatakbo mo ang sl utility na walang mga argumento, ang sarili mong mga lokal na pagbabago lang ang ipinapakita (ang mga banyaga ay na-collapse), ang katayuan ng mga panlabas na sangay, binagong mga file, at mga bagong bersyon ng mga commit ay ipinapakita. Bilang karagdagan, ang isang interactive na web interface ay ibinigay para sa mabilis na pag-navigate sa pamamagitan ng smart log, change tree, at commits.

Ang isa pang kapansin-pansing pagpapabuti sa Sapling ay iyon ginagawa nitong mas madali ang proseso ng pag-aayos at pagsusuri ng mga error at pagbabalik sa dating estado. Halimbawa, ang mga command na "sl undo", "sl redo", "sl uncommit" at "sl unmend" ay iminumungkahi para sa pag-reverse ng maraming operations, "sl hide" at "sl unhide" para sa pansamantalang pagtatago ng commits at para sa interactive navigation. states Sinusuportahan din ng Sapling ang konsepto ng isang commit stack, na nagbibigay-daan sa iyong ayusin ang isang pagsusuri nang sunud-sunod sa pamamagitan ng paghahati-hati ng kumplikadong functionality sa isang mas maliit, mas naiintindihan na incremental na hanay ng mga pagbabago (mula sa isang pangunahing balangkas hanggang sa isang panghuling tampok). .

Hiwalay, isang bahagi ng server ang binuo para sa epektibong malayong trabaho na may mga repositoryo at isang virtual na file system upang gumana sa isang lokal na bahagi ng isang bahagi ng repositoryo na para bang ito ay isang kumpletong repositoryo (nakikita ng developer ang buong repositoryo, ngunit ang hiniling na data lamang ang kinokopya sa lokal na sistema, na ina-access).

Hindi pa bukas ang code para sa mga bahaging ito na ginagamit sa imprastraktura ng Facebook, ngunit nangako ang kumpanya na ilalabas ito sa hinaharap. Gayunpaman, ang Mononoke server (sa Rust) at VFS EdenFS (sa C++) na mga prototype ay matatagpuan na sa Sapling repository. Opsyonal ang mga bahaging ito at sapat na ang Sapling client para magtrabaho, na sumusuporta sa pag-clone ng mga repositoryo ng Git, pakikipag-ugnayan sa mga server na nakabase sa Git LFS, at pakikipagtulungan sa mga git host tulad ng GitHub.

Maraming mga plugin ang inihanda para sa Sapling, kasama ang ReviewStack interface para sa pagsusuri ng mga pagbabago (code sa ilalim ng GPLv2), na nagbibigay-daan sa iyong iproseso ang mga pull request sa GitHub at gumamit ng change stack view.

Kung interesado kang malaman ang higit pa tungkol dito, maaari mong konsultahin ang mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.