Sapling, sistem kontrol kode sumber yang kompatibel dengan Git

pohon muda

Sapling menekankan kemudahan penggunaan sambil menskalakan ke repositori terbesar di dunia.

Facebook diresmikan melalui posting blog sistem manajemen kode sumber Pohon muda digunakan dalam pengembangan proyek internal perusahaan. Sistem bertujuan untuk menyediakan antarmuka kontrol versi familier yang dapat diskalakan ke repositori yang sangat besar yang mencakup puluhan juta file, komit, dan cabang.

Ide utama dari sistem ini adalah dengan berinteraksi dengan bagian khusus dari server yang menyediakan penyimpanan repositori, semua skala operasi berdasarkan jumlah file sebenarnya digunakan dalam kode yang sedang dikerjakan pengembang, dan tidak bergantung pada ukuran total seluruh repositori.

Misalnya, pengembang hanya dapat menggunakan sebagian kecil kode dari repositori yang sangat besar, dan hanya sebagian kecil ini, bukan seluruh repositori, yang akan ditransfer ke sistem mereka. Direktori kerja diisi secara dinamis, saat file repositori diakses, yang, di satu sisi, memungkinkan Anda mempercepat pekerjaan dengan bagian kode Anda secara signifikan, tetapi di sisi lain, memperlambatnya saat Anda mengaksesnya untuk pertama kali ke file baru dan membutuhkan akses jaringan yang konstan (disediakan secara terpisah dan mode persiapan komit offline).

Selain pemuatan data adaptif, Sapling juga menerapkan pengoptimalan yang ditujukan untuk mengurangi beban informasi dengan riwayat perubahan. (misalnya, 3/4 data dalam repositori dengan kernel Linux adalah riwayat perubahan).

Untuk bekerja secara efektif dengan riwayat perubahan, data yang terkait disimpan dalam tampilan tersegmentasi, yang memungkinkan Anda mengunduh bagian terpisah dari grafik komit dari server. Klien dapat meminta informasi dari server tentang hubungan beberapa konfirmasi dan mengunduh hanya bagian grafik yang diperlukan.

Proyek ini telah dikembangkan selama 10 tahun terakhir dan dibuat untuk memecahkan masalah saat mengakses repositori monolitik yang sangat besar dengan cabang master, di mana praktik menggunakan operasi "rebase" alih-alih "menggabungkan" dipraktikkan.

Pada saat itu, tidak ada solusi terbuka untuk bekerja dengan repositori semacam itu, dan para insinyur Facebook memutuskan untuk membuat sistem kontrol versi baru yang akan memenuhi kebutuhan perusahaan, daripada membagi proyek menjadi repositori kecil, yang akan menyebabkan manajemen ketergantungan yang lebih rumit ( pada suatu waktu, untuk mengatasi masalah serupa, Microsoft membuat lapisan GVFS).

Awalnya, Facebook menggunakan sistem Mercurial dan proyek Sapling awalnya dikembangkan sebagai tambahan Mercurial. Seiring waktu, sistem menjadi proyek independen dengan protokol, format penyimpanan, dan algoritmenya sendiri, yang juga diperluas dengan kemampuan untuk berinteraksi dengan repositori Git.

Untuk bekerja, utilitas baris perintah "sl" diusulkan, yang mengimplementasikan konsep tipikal, alur kerja, dan antarmuka yang familiar bagi developer yang familiar dengan Git dan Mercurial. Terminologi dan perintah di Sapling sedikit berbeda dari Git dan lebih dekat ke Mercurial.

Di antara fitur tambahan dari Sapling, menyoroti dukungan untuk "pendaftaran pintar" (smartlog), yang memungkinkan Anda menilai status repositori Anda secara visual, sorot informasi yang paling penting dan saring detail kecil. Misalnya, ketika Anda menjalankan utilitas sl tanpa argumen, hanya perubahan lokal Anda sendiri yang ditampilkan (yang asing diciutkan), status cabang eksternal, file yang diubah, dan versi komit baru ditampilkan. Selain itu, antarmuka web interaktif disediakan untuk navigasi cepat melalui smart log, change tree, dan commit.

Peningkatan penting lainnya dalam Sapling adalah itu itu membuat proses memperbaiki dan menganalisis kesalahan dan kembali ke keadaan sebelumnya jauh lebih mudah. Misalnya, perintah "sl undo", "sl redo", "sl uncommit" dan "sl unmend" disarankan untuk membalik banyak operasi, "sl hide" dan "sl unhide" untuk menyembunyikan komit sementara dan untuk navigasi interaktif. menyatakan Sapling juga mendukung konsep tumpukan komit, yang memungkinkan Anda mengatur tinjauan langkah demi langkah dengan memecah fungsionalitas kompleks menjadi serangkaian perubahan inkremental yang lebih kecil dan lebih mudah dipahami (dari kerangka kerja dasar hingga fitur akhir). .

Terpisah, bagian server dikembangkan untuk pekerjaan jarak jauh yang efektif dengan repositori dan sistem file virtual untuk bekerja dengan bagian lokal dari bagian repositori seolah-olah itu adalah repositori lengkap (pengembang melihat seluruh repositori, tetapi hanya data yang diminta yang disalin ke sistem lokal, yang diakses).

Kode untuk komponen yang digunakan dalam infrastruktur Facebook ini belum dibuka, tetapi perusahaan telah berjanji untuk merilisnya di masa mendatang. Namun, prototipe server Mononoke (di Rust) dan VFS EdenFS (di C++) sudah dapat ditemukan di repositori Sapling. Komponen ini bersifat opsional dan klien Sapling sudah cukup untuk digunakan, yang mendukung kloning repositori Git, berinteraksi dengan server berbasis Git LFS, dan bekerja dengan host git seperti GitHub.

Beberapa plugin telah disiapkan untuk Sapling, termasuk antarmuka ReviewStack untuk meninjau perubahan (kode di bawah GPLv2), yang memungkinkan Anda memproses permintaan penarikan di GitHub dan menggunakan tampilan tumpukan perubahan.

Jika Anda tertarik untuk mengetahui lebih banyak tentangnya, Anda dapat berkonsultasi dengan detailnya Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.