Sapling, Git-kompatibilni sistem kontrole izvornog koda

mladica

Sapling naglašava jednostavnost korištenja dok se skalira na najveća svjetska spremišta.

Facebook predstavljen putem blog posta sistem upravljanja izvornim kodom Sadnica koristi se u razvoju internih projekata kompanije. Sistem ima za cilj da obezbedi interfejs za kontrolu verzija poznato da se može proširiti na veoma velika spremišta koja obuhvataju desetine miliona fajlova, urezivanja i grana.

Osnovna ideja sistema je da interakcijom sa posebnim delom servera koji obezbeđuje skladištenje spremišta, sve operacije se skaliraju na osnovu broja datoteka koji se stvarno koriste u kodu na kojem programer radi, i ne ovise o ukupnoj veličini cijelog spremišta.

Na primjer, programer može koristiti samo mali dio koda iz vrlo velikog spremišta, i samo će ovaj mali dio, a ne cijelo spremište, biti prebačen u njihov sistem. Radni direktorij se puni dinamički, kako se pristupa datotekama spremišta, što vam s jedne strane omogućava značajno ubrzanje rada sa svojim dijelom koda, ali s druge strane usporava ga kada mu pristupate za prvi put za nove fajlove i zahteva stalan pristup mreži (obezbeđen odvojeno i režim pripreme vanmrežnog urezivanja).

Pored prilagodljivog učitavanja podataka, Sapling također implementira optimizacije koje imaju za cilj smanjenje informacionog opterećenja s istorijom promjena. (na primjer, 3/4 podataka u spremištu sa Linux kernelom je istorija promjena).

Za efikasan rad sa istorijom promjena, podaci povezani s njom se pohranjuju u segmentiranom prikazu, koji vam omogućava da preuzmete zasebne dijelove grafa urezivanja sa servera. Klijent može od servera zatražiti informaciju o odnosu nekoliko potvrda i preuzeti samo potreban dio grafa.

Projekat se razvijao zadnjih 10 godina i kreiran je za rješavanje problema prilikom pristupa vrlo velikim monolitnim repozitorijumima sa master granom, gdje se praktikovala praksa korištenja operacije "rebase" umjesto "merge".

U to vrijeme nije bilo otvorenih rješenja za rad s takvim repozitorijumima i Facebook inženjeri su odlučili kreirati novi sistem kontrole verzija koji bi zadovoljio potrebe kompanije, umjesto da dijele projekte na mala spremišta, što bi dovelo do složenijeg upravljanja ovisnostima ( svojevremeno, da bi riješio sličan problem, Microsoft je kreirao GVFS sloj).

U početku je Facebook koristio Mercurial sistem a projekat Sapling je prvobitno razvijen kao dodatak Mercurialu. Vremenom je sistem postao samostalan projekat sa sopstvenim protokolom, formatom skladištenja i algoritmima, koji je takođe proširen mogućnošću interakcije sa Git repozitorijumima.

Za rad, predlaže se uslužni program komandne linije "sl", koji implementira tipične koncepte, tokove rada i sučelje poznato programerima koji su upoznati sa Gitom i Mercurialom. Terminologija i naredbe u Saplingu malo se razlikuju od Git-a i bliže su Mercurialu.

Među dodatnim funkcijama of Sapling, ističe podrška za "pametnu registraciju" (smartlog), koji vam omogućava da vizuelno procenite status vašeg spremišta, istaknite najvažnije informacije i filtrirajte manje detalje. Na primjer, kada pokrenete sl uslužni program bez argumenata, prikazuju se samo vaše lokalne promjene (strane se skupljaju), prikazuje se status vanjskih grana, promijenjenih datoteka i novih verzija urezivanja. Osim toga, omogućeno je interaktivno web sučelje za brzu navigaciju kroz pametni dnevnik, stablo promjena i urezivanje.

Još jedno značajno poboljšanje u Saplingu je to to znatno olakšava proces ispravljanja i analize grešaka i vraćanja u prethodno stanje. Na primjer, naredbe "sl undo", "sl redo", "sl uncommit" i "sl unmend" su predložene za poništavanje mnogih operacija, "sl hide" i "sl unhide" za privremeno skrivanje urezivanja i za interaktivnu navigaciju. navodi Sapling takođe podržava koncept steka urezivanja, koji vam omogućava da organizujete pregled korak po korak razbijanjem složene funkcionalnosti na manji, razumljiviji inkrementalni skup promena (od osnovnog okvira do finalne karakteristike). .

Odvojeno, razvijen je serverski dio za efikasan daljinski rad sa repozitorijumima i virtuelni sistem datoteka za rad sa lokalnim dijelom dijela spremišta kao da je kompletno spremište (programer vidi cijelo spremište, ali samo traženi podaci se kopiraju u lokalni sistem kojem se pristupa).

Kod za ove komponente koje se koriste u infrastrukturi Facebooka još nije otvoren, ali kompanija je obećala da će ga objaviti u budućnosti. Međutim, prototipovi Mononoke servera (u Rustu) i VFS EdenFS (u C++) se već mogu naći u Sapling repozitorijumu. Ove komponente su opcione i Sapling klijent je dovoljan za rad, koji podržava kloniranje Git repozitorija, interakciju sa Git LFS baziranim serverima i rad sa git hostovima kao što je GitHub.

Za Sapling je pripremljeno nekoliko dodataka, uključujući ReviewStack sučelje za pregled promjena (kod pod GPLv2), koji vam omogućava da obrađujete zahtjeve za povlačenje na GitHub-u i koristite prikaz steka promjena.

Ako ste zainteresovani da saznate više o tome, možete pogledati detalje Na sledećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.