Sapling nandheske gampang digunakake nalika nggawe skala menyang repositori paling gedhe ing donya.
Facebook diluncurake liwat kirim blog sistem manajemen kode sumber sapling digunakake ing pangembangan proyek internal perusahaan. Sistem yakuwi kanggo nyedhiyani antarmuka kontrol versi akrab sing bisa nggedhekake repositori sing gedhe banget nganti puluhan yuta file, commit, lan cabang.
Ide utama sistem kasebut yaiku kanthi sesambungan karo bagean khusus saka server sing nyedhiyakake panyimpenan repositori, kabeh ukuran operasi adhedhasar jumlah file bener digunakake ing kode pangembang digunakake ing, lan ora gumantung ing ukuran total kabeh gudang.
Contone, pangembang bisa nggunakake mung bagean cilik saka kode saka gudang gedhe banget, lan mung bagean cilik iki, lan ora kabeh gudang, bakal ditransfer menyang sistem. Direktori kerja diisi kanthi dinamis, amarga file repositori diakses, sing, ing tangan siji, ngidini sampeyan nyepetake karya kanthi signifikan karo bagean kode sampeyan, nanging ing sisih liya, alon-alon nalika sampeyan ngakses. pisanan kanggo file anyar lan mbutuhake akses jaringan pancet (disedhiyakake kapisah lan offline-komit mode preparation).
Saliyane loading data adaptif, Sapling uga ngetrapake optimasi kanggo nyuda beban informasi kanthi riwayat owah-owahan. (contone, 3/4 data ing repositori karo kernel Linux minangka riwayat owah-owahan).
Kanggo bisa digunakake kanthi efektif karo riwayat pangowahan, data sing ana gandhengane disimpen ing tampilan segmen, sing ngidini sampeyan ndownload bagean kapisah saka grafik komitmen saka server. Klien bisa takon server kanggo informasi babagan hubungan sawetara konfirmasi lan download mung bagean perlu saka grafik.
Proyek kasebut wis dikembangake sajrone 10 taun kepungkur lan digawe kanggo ngatasi masalah nalika ngakses repositori monolitik sing gedhe banget karo cabang master, ing ngendi praktik nggunakake operasi "rebase" tinimbang "nggabungake".
Ing wektu iku, ora ana solusi sing mbukak kanggo nggarap repositori kasebut, lan insinyur Facebook mutusake nggawe sistem kontrol versi anyar sing bakal nyukupi kabutuhan perusahaan, tinimbang pamisah proyek dadi repositori cilik, sing bakal nyebabake manajemen ketergantungan sing luwih rumit ( ing siji wektu, kanggo ngatasi masalah sing padha, Microsoft nggawe lapisan GVFS).
Wiwitane, Facebook nggunakake sistem Mercurial lan proyek Sapling wiwitane dikembangake minangka tambahan Mercurial. Sajrone wektu, sistem kasebut dadi proyek independen kanthi protokol, format panyimpenan, lan algoritma dhewe, sing uga ditambah karo kemampuan kanggo sesambungan karo repositori Git.
Kanggo karya, utilitas baris perintah "sl" diusulake, sing ngetrapake konsep khas, alur kerja, lan antarmuka sing akrab karo pangembang sing kenal karo Git lan Mercurial. Terminologi lan prentah ing Sapling rada beda karo Git lan luwih cedhak karo Mercurial.
Antarane fitur tambahan saka Sapling, highlights ing dhukungan kanggo "registrasi cerdas" (smartlog), sing ngidini sampeyan ngevaluasi kanthi visual status repositori sampeyan, nyorot informasi sing paling penting lan nyaring rincian cilik. Contone, nalika sampeyan mbukak utilitas sl tanpa argumen, mung owah-owahan lokal sampeyan dhewe sing ditampilake (sing manca ambruk), status cabang eksternal, file sing diganti, lan versi komitmen anyar sing ditampilake. Kajaba iku, antarmuka web interaktif kasedhiya kanggo pandhu arah cepet liwat log pinter, wit pangowahan, lan komitmen.
Liyane dandan penting ing Sapling yaiku iku ndadekake proses ndandani lan nganalisa kasalahan lan bali menyang negara sadurungé luwih gampang. Contone, printah "sl undo", "sl redo", "sl uncommit" lan "sl unmend" disaranake kanggo mbalikke akeh operasi, "sl hide" lan "sl unhide" kanggo sementara ndhelikake commits lan kanggo navigasi interaktif. negara Sapling uga ndhukung konsep tumpukan commit, sing ngijini sampeyan kanggo ngatur review langkah dening langkah dening break mudhun fungsi Komplek menyang cilik, pesawat incremental liyane dingerteni saka owah-owahan (saka framework dhasar kanggo fitur final). .
Dhewe, bagean server dikembangaké kanggo karya remot efektif karo repositori lan sistem file virtual kanggo nggarap bagean lokal saka bagean saka gudang kaya-kaya minangka gudang lengkap (pangembang ndeleng kabeh gudang, nanging mung data sing dijaluk disalin menyang sistem lokal, sing diakses).
Kode kanggo komponen kasebut sing digunakake ing infrastruktur Facebook durung mbukak, nanging perusahaan wis janji bakal ngeculake ing mangsa ngarep. Nanging, server Mononoke (ing Rust) lan VFS EdenFS (ing C ++) prototipe wis bisa ditemokake ing repositori Sapling. Komponen kasebut opsional lan klien Sapling cukup kanggo nggarap, sing ndhukung kloning repositori Git, sesambungan karo server basis LFS Git, lan nggarap host git kaya GitHub.
Sawetara plugin wis disiapake kanggo Sapling, kalebu antarmuka ReviewStack kanggo mriksa owah-owahan (kode ing GPLv2), sing ngidini sampeyan ngolah panjaluk tarik ing GitHub lan nggunakake tampilan tumpukan pangowahan.
Yen kasengsem ing ngerti liyane babagan, sampeyan bisa takon rincian Ing link ing ngisor iki.
Dadi pisanan komentar