ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅ Git 2.50. Git ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅. ΠΠ° Π΄Π° ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ βΠ·Π°Π΄Π½Π°ΡΠ° Π΄Π°ΡΠ°β, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠ²Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π² Π²ΡΠ΅ΠΊΠΈ commit, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π·Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ commits. ΠΠΎΠ΄ΡΡ Π½Π° Git ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ GPLv2+.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ 621 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 98 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ 35 ΡΡΠ°ΡΡΠ²Π°Ρ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°. ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΈΠ½ΠΈ:
- Π Π°Π·ΡΠΈΡΠ΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ pack-ΡΠ°ΠΉΠ»Π° Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ (βcruft packsβ), ΠΊΡΠΌ ΠΊΠΎΠΈΡΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΎΡΡΡΡΡΠ²Π°Ρ Π²ΡΡΠ·ΠΊΠΈ (Π½Π΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΡΠ°Π³ΠΎΠ²Π΅). ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ°Π»ΠΊΠΈ pack-ΡΠ°ΠΉΠ»Π° Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ Π³ΠΎΠ»ΡΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΡΡΠΊΡΠ°ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π²Π²ΠΎΠ΄/ΠΈΠ·Π²ΠΎΠ΄ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° Π²ΡΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΡΠ΅ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠΏΡΠΈΡ ββcombine-cruft-below-sizeβ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° Π·Π°Π΄Π°Π΄Π΅Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π½Π°Π»ΠΈΡΠ½Π° ΠΎΠΏΡΠΈΡ ββmax-cruft-sizeβ, Π½ΠΎΠ²Π°ΡΠ° ΠΎΠΏΡΠΈΡ ββcombine-cruft-below-sizeβ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° pack-ΡΠ°ΠΉΠ», ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ°Π·ΠΏΡΡΡΠ½Π°ΡΠΈ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ pack-ΡΠ°ΠΉΠ»Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ MIDX (multi-pack index), ΠΏΡΠΈ ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΠΎΠΉ Π½Π° MIDX-ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ bitmap-ΡΠ°ΠΉΠ». Π ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡΡ Π²ΠΈΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π±ΡΡΠ·ΠΎ ΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π±ΠΈΡΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΏΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ commits.
- ΠΡ ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Β«recursiveΒ», ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ Ρ ΠΈΠ·ΡΡΠ»ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Β«ORTΒ» (Ostensibly Recursiveβs Twin), ΠΏΠΎ-ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅Π½, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΠΈ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°. ORT ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π²Π° ΠΎΠ±Π΅ΠΊΡΠ°, Π±Π΅Π· Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ (ΠΏΡΠΈ ΡΡΠ°ΡΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git merge-tree βwrite-treeΒ», Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ° Π½ΠΎΠ²ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ). Π Git 2.50 Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° merge-tree Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΎΠΏΡΠΈΡ Β«βquietΒ», ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΊΠΎΠ΄ Π½Π° Π²ΡΡΠ½Π°ΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π±Π΅Π· Π·Π°ΠΏΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ.
- Π Β«git cat-file βbatchΒ» ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βfilterΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΏΡΡΠ½Π°Ρ Π½ΡΠΊΠΎΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ°. git cat-file βbatch-check=β%(objectname)β βfilter=βobject:type=treeβ
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git maintenanceΒ» ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠΈ Π½ΠΎΠ²ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: worktree-prune, rerere-gc ΠΈ reflog-expire. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ worktree-prune Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π΄ΡΡΠ²Π΅ΡΠ° (worktrees) Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ rerere-gc ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΡΠ»Π΅Π΄ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ reflog-expire ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ reflog.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«git reflog dropΒ», ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ reflog Π·Π° ΡΠΊΠ°Π·Π°Π½Π°ΡΠ° ΠΊΠ»ΠΎΠ½ΠΊΠ°.
- ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ΅ΡΠΈΠΊΡΠΈ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ ΡΠ° ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git update-refΒ», ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΡΠ΅Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΈ Π½Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ.
- ΠΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° cURL ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ KeepAlive: http.keepAliveIdle, http.keepAliveInterval ΠΈ http.keepAliveCount.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git rev-listΒ» Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ, ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»Π΅ Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» NUL.
- ΠΠ·ΠΈΠΊΡΡ Perl Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΈΡ Π½Π°Π±ΠΎΡ (Β«make testΒ»). ΠΠ½ΠΎΠ³ΠΎ Perl-Π΅Π΄Π½ΠΎΡΠ΅Π΄ΠΎΠ²ΡΠΈ Π² ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ° Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° shell ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ userdiff-ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅Π» Π·Π° ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Β«.iniΒ».
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° send-email Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° SMTP ΡΡΡΠ²Π΅ΡΠ° Outlook.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
