ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ Π±ΠΈΠ»Π΄ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Git 2.54. Git ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅. ΠΠ° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΡΡΠ»ΠΎΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ βΠ·Π°Π΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌβ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠ²Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ ΠΏΡΠΈ Π²ΡΡΠΊΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½Π΅, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° Git ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2+.
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Ρ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ° ΠΏΡΠΈΠ΅ΡΠΈ 770 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 137 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (66 ΠΎΡ ΡΡΡ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Git). ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°:
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° "git history", ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅, ΠΏΠΎ-ΠΏΡΠΎΡΡΠΈ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° "git rebase". ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΠ΅ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
- "git history reword " Π·Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½Π΅ Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° Π±Π΅Π»Π΅ΠΆΠΊΠΈΡΠ΅, Π²ΡΠΈΡΠΊΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΠΎΡΡΠ°Π²Π° Π½Π΅ΠΏΠΎΠΊΡΡΠ½Π°ΡΠΎ). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ΅ΡΠ°ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ°.
- "git history split " Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΠΊΠΎΠΌΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Ρ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΊΠΎΠΌΠΈΡ Π² Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΊΠΎΠΌΠΈΡ.
Π Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ: "git history fixup" Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ, "git history drop" Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡ, "git history reorder" Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅Π΄Π° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ ΠΈ "git history squash" Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ.
- ΠΡΠ²Π΅Π΄Π΅Π½ Π΅ Π½ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (hook) Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Β«.git/hooksΒ» Π½Π° Π²ΡΡΠΊΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΠ΅Π³Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π²Π°Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π΄Π΅ΠΉΡΡΠ²Π°Ρ Π·Π° Π²ΡΠΈΡΠΊΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° (/etc/gitconfig) ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ (~/.gitconfig). ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΊΡΠΌ Π΅Π΄Π½ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅. Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Β«.git/hooksΒ» Π²ΡΠ΅ ΠΎΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ, Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ»Π΅Π΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠΏΠΈΡΡΠΊΠ° Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git hook listΒ», Π° Π·Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΎ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ β Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Β«hook..enabled = falseΒ». [hook Β«linterΒ»] event = pre-commit command = ~/.bin/linter βcpp20 [hook Β«no-leaksΒ»] event = pre-commit command = ~/.bin/leak-detector $ git hook list pre-commit global linter ~/.bin/linter βcpp20 local no-leaks ~/.bin/leak-detector
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git maintenanceΒ» ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° Β«geometricΒ» (Β«git config set maintenance.strategy geometricΒ»), ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΡΡΠΊΡΠ°ΡΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git gcΒ», Π½ΠΎΠ²Π°ΡΠ° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΈΠ·Π±ΡΠ³Π²Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΎ ΡΠ΅ΡΡΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π° ΡΠ°ΡΡΠΈ ΠΈ Π±Π΅Π· ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΡΠΈΡΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ).
- ΠΠ°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ (ODB) ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ Π½Π΅Ρ API-ΡΠ° ΡΠ° ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½ΠΈ Π½Π° Π½ΠΎΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° backend. ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π°ΡΠ° ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΠ·Π°ΡΠΈΡ Π°Π±ΡΡΡΠ°Ρ ΠΈΡΠ° ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΈ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ backend-ΠΈ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ git-Ρ ΠΎΡΡΠΈΠ½Π³ΠΈ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git repo structureΒ», ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΎΠ±ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π½ΠΎ ΠΈ Π½Π° Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΡΠΈΠΏ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ΅Π½ΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ git-sizer. $ git repo structure β¦ | * ΠΠ°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ | | | * ΠΠΎΠΌΠΈΡΠΈ | | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ [1] | 17.23 KiB | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈΡΠ΅ [2] | 10 | | * ΠΡΡΠ²Π΅ΡΠ° | | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ [3] | 58.85 KiB | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ [4] | 1.18 k | | * ΠLOB-ΠΎΠ²Π΅ | | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ [5] | 1019.51 KiB | | * Π’Π°Π³ΠΎΠ²Π΅ | | | * ΠΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ [6] | 7.13 KiB |
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git replayΒ», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π²ΠΌΠ΅ΡΡΠΎ Β«git rebaseΒ» Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΡΠ²ΡΡ Π±Π΅Π· ΡΠ°Π±ΠΎΡΠ½ΠΎ Π΄ΡΡΠ²ΠΎ, Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈΡΠ΅ (Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΠΊ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ update-ref Π·Π° ΡΡΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅), Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Β«βrevertΒ» Π·Π° ΠΎΡΠΌΠ΅Π½ΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΡ ΡΠ΅ΡΠΈΡ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΡΠ°Π·Π½ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π΄ΠΎ ΠΊΠΎΡΠ΅Π½ΠΎΠ²ΠΈΡ ΠΊΠΎΠΌΠΈΡ.
- Π Β«git rev-listΒ» ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βmaximal-onlyΒ» Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅, Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΊΠΎΠΌΠΈΡΠΈ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git repo infoΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βkeysΒ» Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΠΊ Ρ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git add -pΒ» ΠΏΡΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠΈΡΠ΅ Β«JΒ» ΠΈ Β«KΒ» Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΠ΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΠ΅ ΠΈ ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ Β«βno-auto-advanceΒ» Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΊΡΠΌ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ», Π·Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ ΠΊΠΎΠΌΠΈΡ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΡΠ΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Β«gitwebΒ» Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git apply βdirectoryΒ» ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΡΠΈΡΠ°, ΠΊΠ°ΡΠΎ Β«.\/un\/..\/normalized\/pathΒ».
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΡΠ΅Π· ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Β«git-<cmd>Β» Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git send-emailΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ.
- ΠΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git statusΒ» Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Β«status.compareBranchesΒ», ΡΡΠ΅Π· ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠΎΡΠ½ΡΡ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π° ΡΠ΅ΠΊΡΡΠΈΡΡ ΠΊΠ»ΠΎΠ½. [status] compareBranches = @{upstream} @{push}
- Π Β«git rebaseΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βtrailerΒ» Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΈΡΠΈ. git rebase βtrailer Β«Reviewed-by: Test <test@example.com>Β»
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit fast-importβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π·Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΠ°Π½Π°Π»ΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΡΠ»Π΅Π΄ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ (compaction) Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ MIDX (multi-pack index), ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ ΠΌΠ°Π»ΠΊΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅ Π½Π° MIDX ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ ΡΡΡ bitmap-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Ρ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° Π½Π°ΡΡΡΠΏΠ°Π½ΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅ Π² ΡΡΠ°ΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit backfillβ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈ) ΠΈ ΠΌΠ°ΡΠΊΠΈ Π·Π° ΠΏΡΡΠΈΡΠ° (pathspec) Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅. git backfill main~100..main git backfill β β*.cβ
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΡΠΎΡΠΌΠΈ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit config listβ β βgit config -lβ ΠΈ βgit config βlistβ.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½Π΅-ASCII ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ Π² ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ». [alias βΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌβ] command = fetch
- ΠΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΏΡΠΈ ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ·ΡΠ΅ΠΊΡΠ» ΡΡΠΎΠΊΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π° GPG ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, Π½ΠΎ ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π²Π°Π»ΠΈΠ΄Π½ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΈΡΠ°. ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΊΠ°ΡΠΎ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈ Ρ Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° ΠΎΡΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠ° (ΠΏΠΎ-ΡΠ°Π½ΠΎ ΡΠ΅ Π±ΡΡ Π° ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈ Π² ΡΠ΅ΡΠ²Π΅Π½ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅ Π·Π° ΡΡΡ Π½Π°ΡΠ° Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡ).
- ΠΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΏΠΎ HTTP Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠ° Ρ ΠΊΠΎΠ΄ 429 (Too Many Requests). ΠΠ°Π²ΡΡΡΠΈΠ»ΠΈΡΠ΅ Ρ ΡΠ°ΠΊΠ°Π²Π° Π³ΡΠ΅ΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠΈ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π½Π΅ ΠΊΠ°ΡΠΎ ΡΠ°ΡΠ°Π»Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π° ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½Π° Π³ΡΠ΅ΡΠΊΠ°, Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ»Π΅Π΄ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°. ΠΠ°Π±Π°Π²ΡΠ½Π΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π·Π°Π΄Π°Π²Π° ΡΡΠ΅Π· ΠΎΠΏΡΠΈΡΡΠ° βhttp.retryAfterβ, Π±ΡΠΎΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ β βhttp.maxRetriesβ, Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ β βhttp.maxRetryTimeβ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
