ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° mergiraf 0.4, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° Π·Π° Git Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠΎΠΉΠ½ΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅. Mergiraf ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΊΠ°ΠΊΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° mergiraf Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅Π΄ΠΎΠ²Π½ΠΈΡ Git, ΡΠ°ΠΊΠ° ΠΈ Π·Π°ΠΌΡΠ½Π° Π½Π° Git ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ° Π½Π° ΡΠ»ΠΈΠ²Π°Π½ΠΈΡ, Π·Π° Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΠΈΡΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°ΡΠΎ merge, revert, rebase ΠΈ cherry-pick. ΠΠΎΠ΄ΡΡ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv3. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΅Π·ΠΈΡΠΈ Python, TOML, Scala ΠΈ Typescript, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° mergiraf:
Π‘ΠΎΡΡΡΠ΅ΡΡΡ Π΅ ΡΡΡΠΊ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»ΠΎΠΆΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°. Π‘Π»ΠΎΠΆΠ½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈΠΌΠ°Ρ Π΅Π΄Π½ΠΎ ΠΎΠ±ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ β ΡΠ΅ ΡΠ° Π‘ΠΠΠΠΠ β ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΡΠ΅, ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠΈ, ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΅Π²ΠΎΠ»ΡΠΈΡΠ°Ρ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°, ΠΈ Π²ΡΡΠΊΠ° ΠΌΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΅ΡΠ°ΠΏ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΠΎΠ²Π°, ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π΄ΠΎΠ±ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. ΠΠ²ΠΎΠ»ΡΡΠΈΡΡΠ° Π½Π° Π²ΡΡΠΊΠ° ΡΠ»ΠΎΠΆΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½Π°ΡΠΎΡΠ΅Π½ΠΎ Π΄ΡΡΠ²ΠΎ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΊΠΎΡΠ΅Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΏΡΠ°Π·Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» β Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡΠ΅Π½Π° β Π΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΡΡΠ°ΡΠΈΡ ΠΊΡΠΌ ΡΠ²ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π».
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» ΡΠ΅ Π½Π°ΡΠΈΡΠ° "Π²Π΅ΡΡΠΈΡ", ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π°Π½ΡΠΈΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΡΠΊΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π² ΡΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ ΡΠ΅ ΡΡΠΈΡΠ° Π·Π° ΠΌΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠΎΡΠΌΠΈΡΠ° ΡΠ΅Π±ΡΠΎ Π² Π½Π°ΡΠΈΡ Π½Π°ΡΠΎΡΠ΅Π½ Π°ΡΠΈΠΊΠ»ΠΈΡΠ΅Π½ Π³ΡΠ°Ρ. Π’Π΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ; ΡΠ΅ Π½Π΅ ΠΎΡΡΠ°Π·ΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π° ΠΏΠΎ-ΡΠΊΠΎΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠΌΠ½ΠΈ Π°Π³Π΅Π½ΡΠΈ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄Π°Ρ ΠΈΠ΄Π΅ΠΈΡΠ΅ Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Π² ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π·Π°ΡΡΡΠ°Ρ ΡΡΠΊΠ°Π²ΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΠΏΠΈΠΌ Π² *Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ* Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈΡΠ΅ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ, Π½Π° Π΅Π·ΠΈΠΊ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΡΠ°Π·ΠΈΠΌ ΠΈ ΠΎΠ±ΡΡΠ½ΠΈΠΌ ΠΊΠ°ΠΊ ΡΠΎΡΠ½ΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅Ρ ΡΠ΅Π·ΠΈ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄.
ΠΠ° Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π΄ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΠΈΠ·ΡΠ°Π·ΡΠ²Π°ΡΠΎ ΠΆΠ΅Π»Π°Π½ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΈ Π΄Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Ρ ΠΊΠ°ΠΊ ΡΠ° ΡΡΠΈΠ³Π½Π°Π»ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡ ΡΠ²ΠΎΡΡΠ° ΡΠ°Π±ΠΎΡΠ° Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΈ Π½Π° snapshot ΠΈ changeset. Snapshot ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Ρ Π²ΡΠΈΡΠΊΠΈ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ changeset ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΏΡΠ΅Ρ ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ snapshot-ΠΈΡΠ΅. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ snapshot-ΠΈΡΠ΅ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Ρ ΠΎΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ changeset-ΠΎΠ²Π΅ ΡΠΏΡΡΠΌΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅Π·ΠΈ snapshot-ΠΎΠ²Π΅ ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Π½Π° changeset-ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π³ΠΈ ΡΡΠ·Π΄Π°Π²Π°Ρ, ΠΈ Π·Π°ΡΠΎΠ²Π° ΡΠ΅Π·ΠΈ ΡΠ΅ΡΠΌΠΈΠ½ΠΈ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ.
ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ½ΠΈΠΌΠΊΠΈ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° β ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ. Π’Π΅ ΡΠ° ΡΡΡΠ΄Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ°, Π·Π°ΡΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·Π±ΡΠ³Π²Π°Ρ. Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠ°ΡΠΎ Git, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄ΠΎΡΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°. Π’Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Ρ ΡΠ½ΠΈΠΌΠΊΠΈΡΠ΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π½Π°ΡΠΎΡΠ΅Π½ΠΈ Π°ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ Π³ΡΠ°ΡΠΎΠ²Π΅, Π΄Π° Π³ΠΈ Π°Π½ΠΎΡΠΈΡΠ°Ρ Ρ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΡΡΡ Π½Π°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ.
Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΏΠΈΡΠ°Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΎ Π·Π½Π°ΡΠΈΠΌΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ΅ΡΠ°Π²Π°ΡΠΎ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠΏΡΠΎΡΠΈ ΠΊΠ°ΡΠΎ βΠΠ°ΡΠΎ Π±Π΅ΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅Π½ ΡΠΎΠ·ΠΈ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²Π΅Π½ Π΄Π΅ΡΠ°ΠΉΠ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°)?β, βΠΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π΅ ΠΌΠΎΡΡ ΠΏΡΠΈΠ½ΠΎΡ Π² ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ?β, βΠΠΎΠ³ΠΎ Ρ Π°ΠΊΠ½Π°Ρ Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡΡΠ° Π½Π° Π±Π΅ΠΊΠ΄ΠΎΡ ΠΈ ΠΊΠΎΠ³Π°?β, βΠΠ°ΠΊΠ²ΠΎ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΏΠΈ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π½Π΅ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° Π΅ ΡΠ°ΠΊΠ°, Π½ΠΈΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡ ΠΌΠ΅!?)"
Π‘ΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π²Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ β Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°Ρ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ½ΠΎ Π·Π½Π°ΡΠΈΠΌ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΠΎΠ½Π° Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ (ΠΊΠΎΠ΅ΡΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π΅ ΠΌΠ΅ΠΉΠ½ΡΡΡΠΈΠΉΠΌ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅), Π²ΡΠ΅ΠΊΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡΠΎΠΉΠ½ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΏΠΎ ΡΡΠ΅ΠΏΠ΅Π½ Π½Π° Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡ ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ΄ ΠΈ ΡΡΠΆΠ΄Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π±Π΅Π· Π΄Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΎ Π½Π° ΡΡΠΊΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ.
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ "ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ" ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ (Π² ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ β ΡΠ»Π΅Π΄ Π²ΡΡΠΊΠΎ ΠΊΠΎΠΌΠΈΡΠ²Π°Π½Π΅) ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΊΠ»ΠΎΠ½, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ, ΠΎΡΠΊΡΠΈΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-ΡΠ°Π½ΠΎ.
ΠΡΠΈ ΠΎΠΏΠΈΡ Π·Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ snapshot-ΠΎΠ²Π΅ (ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΡΠΎΡΡΠΎ Π½Π°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° changeset-ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π³ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ, Π²ΡΡΡ Ρ Π΄ΡΡΠ³, ΡΠ°Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅ Π½Π°ΡΠΈΡΠ° rebase, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π΅ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΡΠΎ rebase, ΠΏΡΠΎΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈΡΠ° Π³ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ°Π²Π° Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ° Ρ ΡΡΡ , Π·Π°ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ°ΡΠ°ΡΡ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ°Ρ ΠΎΡ ΡΠ»ΠΈΠ²Π°Π½ΠΈΡ Π² ΠΏΠΎΠ»Π·Π° Π½Π° rebase-ΠΎΠ²Π΅) Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅ (VCS) ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΡΡΠ΅ΡΠ½ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π²ΡΠ΅ΠΊΠΈ ΡΠ΅Π΄ ΠΊΠ°ΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ», Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ β ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΎΡ ΡΡΡ , ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠΈΠ»Π°Π³Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ Π·Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈΠΌ, ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠΆΠ΄Π°ΡΠΈ ΠΎΡ Π±ΠΈΠΎΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ°ΡΠ°.
ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠΎΠ²Π° ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π΅ ΠΎΡΡΠ°Π·ΡΠ²Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΠΌΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΌΡ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π΅, ΡΠ΅ Π΅ ΠΏΡΠΎΡΡ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½. ΠΠ΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡΡΠ° Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ, ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΠ΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅. Π Π°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π΄Π° ΠΏΡΠΎΡΡΠΈ ΠΈ Π΄Π²Π΅ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠΎΠ΄Π°, ΠΈ ΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ βΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈβ ΠΈΠ»ΠΈ βΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ²Π°ΡΠΈβ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΠΈ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΡΡΡΠ½ΠΎ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄ ΠΈ Π΄Π° ΠΎΡΡΡΡΠ°Π½ΠΈ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΡΡΠ΅ΡΠ½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΠΏΡΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°. ΠΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΡΠΌ ΡΡΡΠ½ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄, ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° ΡΡΠ°Π²Π° ΠΏΡΠ»Π΅Π½ ΠΊΠΎΡΠΌΠ°Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΆΠ°ΡΠ½ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ, Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΠΏΠΎΡΡΡΠΎΡΠ½ΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ ΡΠ°Π±ΠΎΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° Π½Π΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠΈΡΠ΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΊΠ°Π½ΠΎΠ½ΠΈΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠ°ΡΠΎ black.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΆΠ°ΡΠ½ΠΈ ΡΠ»ΡΡΠ°ΠΈ (ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ, Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΡΡ , ΠΏΠΎΡΡΡΠΎΡΠ½ΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π΅ Ρ Π΅Π²ΡΠΈΡΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΎ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Ρ ΠΊΠΎΠ΄; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π΄ΠΈΠ½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π» ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, Π° Π΄ΡΡΠ³ Π΅ Π½Π°ΠΏΠΈΡΠ°Π» Π½ΠΎΠ² ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅/ΠΏΡΠ΅Π±Π°Π·ΠΈΡΠ°Π½Π΅ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ°, Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΡΠ΅ ΡΡΠ°Π½Π΅ Π½Π΅ΡΠ°Π±ΠΎΡΠ΅Ρ) Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ Π²ΡΡΡΠ΅ΡΠ΅Π½ ΠΌΠΎΠ΄Π΅Π».
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡΡΠ° Π² ΡΠ°Π·ΠΈ ΠΎΠ±Π»Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π²Π΅ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 30 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π΄ΠΎΠ²Π΅Π΄ΠΎΡ Π° Π΄ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΠΈ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΡΠ΅Π·ΠΈ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ Π΄ΠΎΡΠΊΠΎΡΠΎ Π½Π΅ Π±ΡΡ Π° ΠΏΡΠ΅Π²ΡΡΠ½Π°ΡΠΈ Π² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° 2010-ΡΠ΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ Π±Π΅ΡΠ΅ ΠΈΠ·ΡΡΠ»ΠΎ ΡΠΎΠΊΡΡΠΈΡΠ°Π½Π° Π²ΡΡΡ Ρ Π΅Π·ΠΈΠΊΠ° Java.
ΠΠ°ΠΉ-Π·Π½Π°ΡΠΈΠΌΠ°ΡΠ° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄, GumTree, Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΎΡ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π» Ρ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅Π½ ΡΠΎΠ½, Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Java ΠΈ ΠΈΠΌΠ° ΡΠ²ΠΎΠ΅ΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅, ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π°ΡΠΎ treesitter. Π’Ρ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ ΠΊΠ°ΠΊΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° treesitter, ΡΠ°ΠΊΠ° ΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ. Π’Π°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° (ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠΎΠ² ΠΆΡΡΠ½Π°Π» Π½Π° ΡΡΠ±ΠΈΡΠΈΡ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ API, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΎ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ Π―Π, ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ Π·Π° Java) ΠΈ Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΡ Π½Π΅ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΎΡ Π½Π΅Ρ diff-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° diff-ΠΎΠ²Π΅ ΡΡΠ΅Π· API).
ΠΠΎ-ΠΌΠ»Π°Π΄Π°ΡΠ° ΠΈ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π·Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ difftastic Π΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Rust, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° treesitter ΠΈ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ° Π²ΡΡΡ Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΅Π½ΠΈ diff-ΠΎΠ²Π΅ Π² ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ°. Π’Π°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° diff-ΠΎΠ²Π΅ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠΈ ΠΏΠΎΡΡΠ°Π²Ρ Π·Π° ΡΠ΅Π» ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅.
Π‘ΡΠ²ΡΠ΅ΠΌ Π½Π°ΡΠΊΠΎΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΏΡΠΎΠ΅ΠΊΡΡΡ mergiraf. Π’ΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Rust (Π·Π°Π΅Ρ Π΅ 21 MiB!), ΡΡΡΠΎ Π΅ Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° treesitter, ΠΊΠΎΠΉΡΠΎ Π²Π΅ΡΠ΅ ΡΠ΅ Π΅ ΡΡΠ²ΡΡΠ΄ΠΈΠ» ΠΊΠ°ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΠΏΠ°ΡΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈ Π³ΡΠ°ΠΌΠ°ΡΠΈΠΊΠΈ Π² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° LLVM Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½ΠΈΡ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΈΡΠ΅ ΡΠΈ, mergiraf ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° diff-ΠΎΠ²Π΅, Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅. ΠΠΎΠ΄ ΠΊΠ°ΠΏΠ°ΠΊΠ°, mergiraf ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² GumTree, Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² spork, Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΡΡΡΡΠΊΡΡΡΠΈ treesitter, Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅.
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΠ°ΡΠΎΠ²Π΅ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° (Π½ΠΎ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΡΠ΅Π· ΠΏΠ°ΡΡΠΈΠ½Π³ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΡΠ±ΠΈΡΠΈΡ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΎΡ GumTree). ΠΡΡΠ³ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π·Π° ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ Π½Π° LSP-ΡΡΡΠ²ΡΡΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΡΡΠ» ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°ΠΌΠΎ Π·Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ.
ΠΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ°: ΠΎΠ±Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π» "base.py" (ΠΎΡΡΡΡΠΏΠΊΠΈ ΡΠ°Π±ΠΎΠ²Π΅, ΠΈΠ·Π»ΠΈΡΠ΅Π½ ΡΠ΅Π΄ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ) foo = 1 def main(): print(foo + 2 + 3) "a.py" (ΠΎΡΡΡΡΠΏΠΊΠΈΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ° ΡΠ°Π±ΠΎΠ²Π΅, 2 ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π΄Π° Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½, Π·Π° ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ°Ρ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° icecream, Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΊΠ»Π°Ρ "baz": from icecream import ic foo = 1 def main(): ic(foo + 2 + 3) ΠΊΠ»Π°Ρ baz: def __init__(self): """baz""" "b.py" (ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° "foo" Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π° Π½Π° "bar", ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° Ρ "black" ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡΡΡΡΠΏΠΊΠΈΡΠ΅ ΡΠ° Ρ ΠΏΡΠ°Π·Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΠ° ΠΈΠ·ΡΡΠ·Π°Π½ΠΈ): bar = 1 def main(): print(bar + 2 + 3) ΠΠΈΠ·ΠΎΠ² .\/mergiraf merge .\/base.py .\/a.py .\/b.py -x a.py -y b.py -s base.py -o .\/res.py Π΄Π°Π²Π° ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ from icecream import ic bar = 1 def main(): ic(bar + 2 + 3) ΠΊΠ»Π°Ρ baz: def __init__(self): """baz""" (Π·Π° ΠΎΡΠ»Π°Π΄ΡΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ°Ρ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° "icecream", ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° "foo" Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π° Π½Π° "bar", ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° Ρ "black" ΡΠ»Π΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΡΡΡΡΠΏΠΊΠΈΡΠ΅ ΡΠ° Ρ ΠΏΡΠ°Π·Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΠ° ΠΈΠ·ΡΡΠ·Π°Π½ΠΈ, ΡΠΌΠ΅Ρ ΠΎΡ ΡΠ°Π±ΠΎΠ²Π΅ ΠΈ ΠΏΡΠ°Π·Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π·Π° ΠΎΡΡΡΡΠΏ, Π½ΠΎ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ Π²ΠΈΠ΄).
Π’ΡΠΊ ΡΠ΅ Π²ΠΈΠΆΠ΄Π° Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. Π‘ΡΠΈΠ»ΡΡ Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ " .editorconfig ", ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΡΠΈΠ»a, ΠΊΠ°ΡΠΎ ΡΠΌΡΠ½Π° Π½Π° ΡΠ°Π±ΠΎΠ²Π΅ Ρ ΠΏΡΠ°Π·Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ Π½Π° ΡΡΠΈΠ»a Π½Π° black-Π°, ΠΊΠ°ΠΊΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π² "b.py", ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² " .editorconfig ". Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° ΠΏΠΎ-ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π° Π³Π»ΠΎΠ±Π°Π»Π΅Π½ ΡΡΠΈΠ» "ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅" ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΡ " .editorconfig ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
