Facebook (Π·Π°Π±ΡΠ°Π½Π΅Π½ Π² Π ΡΡΠΊΠ°ΡΠ° ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΡ) ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊΠ° Sapling, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΈΡΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈΠΌΠ° Π·Π° ΡΠ΅Π» Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΠΏΠΎΠ·Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ Π΄Π΅ΡΠ΅ΡΠΊΠΈ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ. ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΡ ΠΊΠΎΠ΄ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Python ΠΈ Rust ΠΈ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΏΠΎΠ΄ GPLv2 Π»ΠΈΡΠ΅Π½Π·.
ΠΡΠ΄Π΅Π»Π½ΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΡΡΡΠ²ΡΡΠ½Π° ΡΠ°ΡΡ Π·Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΡΡΠ΅Π· Π½Π° ΡΠ°ΡΡ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ ΠΏΡΠ»Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π²ΠΈΠΆΠ΄Π° ΡΡΠ»ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½ΠΎ ΡΠ°ΠΌΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎ ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ° Π² Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°). ΠΠΎΠ΄ΡΡ Π·Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Facebook, Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½, Π½ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° ΠΎΠ±Π΅ΡΠ° Π΄Π° Π³ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π² Π±ΡΠ΄Π΅ΡΠ΅. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΠ±Π°ΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Sapling Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° Mononoke (Π² Rust) ΠΈ VFS EdenFS (Π² C++). Π’Π΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π΅ ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Sapling Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡ ΡΡΡΠ²ΡΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Git LFS ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ git Ρ ΠΎΡΡΠΈΠ½Π³ ΡΠ°ΠΉΡΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ GitHub.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΈΠ΄Π΅Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅, ΡΠ΅ ΠΏΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΡΡΡΠ²ΡΡΠ½Π° ΡΠ°ΡΡ, ΠΊΠΎΡΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π±ΡΠΎΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΊΠΎΠ΄Π°, Π²ΡΡΡ Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΠ°Π±ΠΎΡΠΈ, ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΎΠ±ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΡΠ»ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ ΠΌΠ°Π»ΠΊΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΡΠ°ΠΌΠΎ ΡΠ°Π·ΠΈ ΠΌΠ°Π»ΠΊΠ° ΡΠ°ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΌΠΈΠ³ΡΠΈΡΠ°Π½Π° ΠΊΡΠΌ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π° Π½Π΅ ΡΡΠ»ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. Π Π°Π±ΠΎΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΡΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ, ΠΎΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π°, Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π²Π°ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΎΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π°Π±Π°Π²ΡΠ½Π΅ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Π½ΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΡΠ΅ΠΆΠ°ΡΠ° (ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΈ ΠΎΡΠ»Π°ΠΉΠ½ ΡΠ΅ΠΆΠΈΠΌ Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ).
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, Sapling ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠΈΠ»Π°Π³Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Ρ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 3/4 ΠΎΡ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Ρ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux Π΅ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅). ΠΠ° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ Π½Π΅Ρ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ ΠΎΡ ΡΡΡΠ²ΡΡΠ°. ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΡΡΠ²ΡΡΠ° Π·Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠΌΠΈΡΠ° ΠΈ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ ΡΠ°ΠΌΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ°.
ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ Π΅Π΄ΠΈΠ½ Π³Π»Π°Π²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° βrebaseβ Π²ΠΌΠ΅ΡΡΠΎ βmergeβ. ΠΠΎ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π½ΡΠΌΠ°ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΊΠΈΠ²Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° Facebook ΡΠ΅ΡΠΈΡ Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ Π½ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, ΠΊΠΎΡΡΠΎ Π΄Π° ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π½ΡΠΆΠ΄ΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ Π½Π° ΠΌΠ°Π»ΠΊΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π±ΠΈ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (ΠΏΠΎ Π΅Π΄Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π·Π° Π΄Π° ΡΠ΅ΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Microsoft ΡΡΠ·Π΄Π°Π΄Π΅ GVFS ΡΠ»ΠΎΠΉ). ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Facebook ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Mercurial ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Sapling Π½Π° ΠΏΡΡΠ²ΠΈΡ Π΅ΡΠ°ΠΏ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΊΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Mercurial. Π‘ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Π² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΡΠΎΡΠΌΠ°Ρ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠΎ Π±Π΅ΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Git Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
ΠΠ° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ ΡΠ΅Π΄ βslβ, ΠΊΠΎΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΠΎΠ·Π½Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ Git ΠΈ Mercurial. Π’Π΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π² Sapling ΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡ Git ΠΈ ΡΠ° ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΊΠΈ Π΄ΠΎ Mercurial. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ βΠΎΡΠΌΠ΅ΡΠΊΠΈβ (ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ), ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅/ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π΅ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° ΡΡΠ»ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π° ΡΠ°ΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΊΠ»ΠΎΠ½, Π½ΡΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ( Π΅ΡΠ°ΠΏΠ½Π° ΠΎΠ±Π»Π°ΡΡ), Π²ΠΌΠ΅ΡΡΠΎ β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". ΠΠΎ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΎΠ±ΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π·Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅/ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅/ΠΈΠ·Π±ΡΡΠ²Π°Π½Π΅/ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½Π΅/ΡΠ΅Π±Π°Π·ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ.
Π‘ΡΠ΅Π΄ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° Sapling ΡΠ΅ ΠΎΡΠΊΡΠΎΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° βsmartlogβ, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π΄Π° ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π΅ΡΠ΅ Π½Π°ΠΉ-Π²Π°ΠΆΠ½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ°ΡΠ΅ ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΠΈΡΠ΅ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° sl Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΡΠ°ΠΌΠΎ Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π½Π° Π΅ΠΊΡΠ°Π½Π° (Π΄ΡΡΠ³ΠΈ ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ), ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π½ΠΎΠ²ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅Π± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΠΉΡΠΎ Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π±ΡΡΠ·ΠΎ Π½Π°Π²ΠΈΠ³ΠΈΡΠ°Π½Π΅ ΠΏΡΠ΅Π· ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΈΡ Π΄Π½Π΅Π²Π½ΠΈΠΊ, ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄ΡΡΠ²ΠΎΡΠΎ ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ.
ΠΡΡΠ³ΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Sapling Π΅, ΡΠ΅ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΡΡΡΠ°Π½Π΅ΡΠΎ ΠΊΡΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ βsl undoβ, βsl redoβ, βsl uncommitβ ΠΈ βsl unamendβ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ; ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ βsl hideβ ΠΈ βsl unhideβ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ; ΠΈ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΡΠ΅Π· ΡΡΠ°ΡΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π²ΡΡΡΠ°Π½Π΅ ΠΊΡΠΌ ΠΏΠΎΡΠΎΡΠ΅Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βsl undo -i commandβ. Sapling ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΡΡΠ΅ΠΊ Π·Π° Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°, ΠΊΠ°ΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ»ΠΎΠΆΠ½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ, ΠΏΠΎ-ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ (ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½Π° ΡΠ°ΠΌΠΊΠ° Π΄ΠΎ Π·Π°Π²ΡΡΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ).
ΠΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Sapling, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ReviewStack Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ (ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ GPLv2), ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° GitHub ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΠ΅ΠΊΠΎΠ² ΠΈΠ·Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ VSCode ΠΈ TextMate ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ISL (Interactive SmartLog) ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΡΡΠ²ΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru