Facebook прСдставил Π½ΠΎΠ²ΡƒΡŽ систСму управлСния исходными тСкстами Sapling

Facebook (Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½ Π² Π Π€) ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» систСму управлСния исходными тСкстами Sapling, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. БистСма Π½Π°Ρ†Π΅Π»Π΅Π½Π° Π½Π° прСдоставлСниС ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ интСрфСйса управлСния вСрсиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… дСсятки ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π²Π΅Ρ‚ΠΎΠΊ. Код ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° написан Π½Π° языках Python ΠΈ Rust, ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° сСрвСрная Ρ‡Π°ΡΡ‚ΡŒ для эффСктивной ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рСпозиториями ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ файловая систСма для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ срСзом части рСпозитория ΠΊΠ°ΠΊ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²ΠΈΠ΄ΠΈΡ‚ вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½ΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ систСму ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вострСбованныС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ обращСния). Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² инфраструктурС Facebook ΠΊΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Π½ΠΎ компания ΠΎΠ±Π΅Ρ‰Π°Π»Π° ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² настоящСС врСмя Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Sapling ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ сСрвСра Mononoke (Π½Π° языкС Rust) ΠΈ VFS EdenFS (Π½Π° Π‘++). Π”Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ достаточно ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Sapling, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², взаимодСйствиС с сСрвСрами Π½Π° Π±Π°Π·Π΅ Git LFS ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с git-хостингами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ GitHub.

Основная идСя систСмы Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ взаимодСйствии со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСрвСрной Ρ‡Π°ΡΡ‚ΡŒΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ рСпозитория, всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² зависимости ΠΎΡ‚ числа Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΊΠΎΠ΄Π΅, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΠΈ Π½Π΅ зависят ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° всСго рСпозитория. НапримСр, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лишь Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΡ€Ρ†ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΡ‡Π΅Π½ΡŒ большого рСпозитория ΠΈ Π½Π° Π΅Π³ΠΎ систСму Π±ΡƒΠ΄Π΅Ρ‚ пСрСнСсСна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эта нСбольшая Ρ‡Π°ΡΡ‚ΡŒ, Π° Π½Π΅ вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° производится динамичСски, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ обращСния ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ· рСпозитория, Ρ‡Ρ‚ΠΎ с ΠΎΠ΄Π½ΠΎΠΉ стороны позволяСт сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ со своСй Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠΎΠ΄Π°, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ замСдлСнию ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наличия постоянного доступа ΠΊ сСти (ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ прСдусмотрСн ΠΈ offline-Ρ€Π΅ΠΆΠΈΠΌ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²).

ΠšΡ€ΠΎΠΌΠ΅ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Sapling Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° сокращСниС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с историСй ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 3/4 Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ с ядром Linux приходится Π½Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ). Для эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с историСй ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, связанныС с Π½Π΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… хранятся Π² сСгмСнтированном прСдставлСнии, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ с сСрвСра ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ части Π³Ρ€Π°Ρ„Π° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ сСрвСра ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ связи Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π³Ρ€Π°Ρ„Π°.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ развиваСтся Π½Π° протяТСнии послСдних 10 Π»Π΅Ρ‚ ΠΈ Π±Ρ‹Π» создан для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ доступа ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΌ рСпозиториям с ΠΎΠ΄Π½ΠΎΠΉ master-Π²Π΅Ρ‚ΠΊΠΎΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «rebase» вмСсто «merge». Π’ Ρ‚ΠΎ врСмя ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ рСпозиториями отсутствовали ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹ Facebook Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ систСму управлСния вСрсиями, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΡƒΡŽ потрСбностям ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, вмСсто дроблСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° ΠΌΠ΅Π»ΠΊΠΈΠ΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ ΡƒΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡŽ управлСния зависимостями (Π² своё врСмя для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ компания Microsoft создала прослойку GVFS). Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² Facebook ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ систСма Mercurial ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Sapling Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС развивался ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Mercurial. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ систСма Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ Π² ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со своим ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ хранСния ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π» Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ взаимодСйствия с Git-рСпозиториями.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдлагаСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки «sl», Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы ΠΈ интСрфСйс, ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Π΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с Git ΠΈ Mercurial. ВСрминология ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² Sapling Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Git ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ Mercurial. НапримСр, вмСсто Π²Π΅Ρ‚ΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ «Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ» (ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ‚ΠΊΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ), ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ clone/pull загруТаСтся Π½Π΅ вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ основная Π²Π΅Ρ‚ΠΊΠ°, отсутствуСт ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² (staging area), вмСсто «git fetch» примСняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° «sl pull», вмСсто «git pull» — «sl pull —rebase», вмСсто «git checkout COMMIT» — «sl goto COMMIT», вмСсто «git reflog»- «sl journal», для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ измСнСния вмСсто «git checkout — FILE» указываСтся «sl revert FILE», Π° для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π΅Ρ‚ΠΊΠΈ «HEAD» примСняСтся «.». Но Π² Ρ†Π΅Π»ΠΎΠΌ, ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π²Π΅Ρ‚ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ clone/pull/push/commit/rebase ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ.

Из Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй инструмСнтария Sapling выдСляСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° «ΡƒΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°» (smartlog), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ наглядно ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ состояниС своСго рСпозитория, Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΎΡ‚ΡΠ΅ΡΡ‚ΡŒ второстСпСнныС Π΄Π΅Ρ‚Π°Π»ΠΈ. НапримСр, ΠΏΡ€ΠΈ запускС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ sl Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π° экран выводятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ собствСнныС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ измСнСния (Ρ‡ΡƒΠΆΠΈΠ΅ ΡΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ), показываСтся состояниС Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ, ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ вСрсии ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСдлагаСтся ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ web-интСрфСйс, Π΄Π°ΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ быстро ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠ½ΠΎΠΌΡƒ Π»ΠΎΠ³Ρƒ, Π΄Π΅Ρ€Π΅Π²Ρƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ.

Facebook прСдставил Π½ΠΎΠ²ΡƒΡŽ систСму управлСния исходными тСкстами Sapling

Π”Ρ€ΡƒΠ³ΠΈΠΌ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π² Sapling являСтся ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ процСсса исправлСния ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π° ошибок, ΠΈ возвращСния ΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ. НапримСр, для ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «sl undo», «sl redo», «sl uncommit» ΠΈ «sl unamend», для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ скрытия ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «sl hide» ΠΈ «sl unhide», Π° для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ старым состояниям ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° «sl undo -i command». Π’ Sapling Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся концСпция стСка ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ пошаговоС Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ слоТной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΈΠ· Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ понятных ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ каркаса Π΄ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

Для Sapling ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΎ нСсколько Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… интСрфСйс для рСцСнзирования ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ReviewStack (ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ GPLv2), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ pull-запросы Π½Π° GitHub ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСковоС прСдставлСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ дополнСния для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ VSCode ΠΈ TextMate, Π° Ρ‚Π°ΠΊΠΆΠ΅ рСализация интСрфСйса ΠΈ сСрвСра ISL (Interactive SmartLog).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru