Π‘Π»Π΅Π΄ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΊΠΎΠ΄Π° Git 2.41. Git Π΅ Π΅Π΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈΡΠ΅, Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈ Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π³ΡΠ²ΠΊΠ°Π²ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ. ΠΠ° Π΄Π° ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΡΡΡ Π·Π°Π΄Π½Π° Π΄Π°ΡΠ°, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠΌΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΈΡ, ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Ρ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π±ΡΡ Π° ΠΏΡΠΈΠ΅ΡΠΈ 542 ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 95 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΠΎΡ ΠΊΠΎΠΈΡΠΎ 29 ΡΡΠ°ΡΡΠ²Π°Ρ Π° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ. ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ:
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ (Π½Π΅ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΡΠ°Π³ΠΎΠ²Π΅). ΠΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Ρ ΠΎΡ ΡΡΠ±ΠΈΡΠ°ΡΠ° Π½Π° ΠΎΡΠΏΠ°Π΄ΡΡΠΈ, Π½ΠΎ ΠΎΡΡΠ°Π²Π°Ρ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ΡΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅. ΠΠ° Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΡΡ Π½Π° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±Π²ΡΡΠΆΠ°Ρ Π΅ΡΠΈΠΊΠ΅ΡΠΈ ΠΊΡΠΌ ΡΡΡ
Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Π² Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ-ΡΠ°ΠΉΠ», Π² ΠΊΠΎΠΉΡΠΎ Π²ΡΠΈΡΠΊΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΈΠΌΠ°Ρ ΠΎΠ±ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π°. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π²ΡΠ΅ΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΠ±Π΅ΠΊΡ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ°ΠΉΠ», ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄Π΅ΡΠ΅ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π½ΠΎΠ²ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ
Π° Π½Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡΡ βcruft packsβ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² Π΅Π΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅ΡΠ΅Π½ ΡΠ°ΠΉΠ» ΠΈ ΠΎΡΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ Π² ΠΎΡΠ΄Π΅Π»Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°, ΡΡΡ
ΡΠ°Π½Π΅Π½Π° Π² ΡΠ°ΠΉΠ» Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ β.mtimesβ ΠΈ ΡΠ²ΡΡΠ·Π°Π½ ΡΡΠ΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠ΅Π½ ΡΠ°ΠΉΠ» Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ β.idxβ.
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ (revindex) Π½Π° Π΄ΠΈΡΠΊΠ° Π·Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ΡΡΠ²Π°Ρ
ΠΌΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° torvalds/linux, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΡΡΠΊΠΎΡΠΈΠΌ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈΡΠ΅ βgit pushβ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ 1.49 ΠΏΡΡΠΈ ΠΈ ΠΏΡΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° βgit cat- file --batch='%(objectsize:disk)' Β» 77 ΠΏΡΡΠΈ. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ (.rev) Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ΅ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π²ΡΡΡΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° ".git/objects/pack".
Π‘ΠΏΠΎΠΌΠ½Π΅ΡΠ΅ ΡΠΈ, ΡΠ΅ Git ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π² ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΠΈΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ, ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π² ΠΊΠΎΠΈΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΠΎΡΠΎΠΊ ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠ»Π΅Π΄Π²Π°ΡΠΈ Π΅Π΄ΠΈΠ½ ΡΠ»Π΅Π΄ Π΄ΡΡΠ³ (ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ git fetch ΠΈ git Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ). ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ΅Π½ ΡΠ°ΠΉΠ» ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ΅Π½ ΡΠ°ΠΉΠ» (.idx), ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΡΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠ°ΠΉΠ», ΡΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΎΠ±Π΅ΠΊΡ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ°.
ΠΠ±ΡΠ°ΡΠ½ΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΠΊΠ»ΡΡΠ΅Π½ Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° ΠΎΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠ° Π² ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠ°ΠΉΠ». ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΈ ΠΏΡΠΈΠ½ΡΠΆΠ΄Π°Π²Π°ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡΡ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠ°ΡΠΈΠ² ΠΎΡ Π΄Π²ΠΎΠΉΠΊΠΈ ΠΎΠ±Π΅ΠΊΡ-ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΡΠΎΡΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ, Π±Π΅ΡΠ΅ 62 ΠΏΡΡΠΈ ΠΏΠΎ-Π±ΡΡΠ·Π° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΡ-ΠΊΡΠΌ-ΠΎΠ±Π΅ΠΊΡ Π½Π΅ Π±ΡΡ Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈ. Π‘Π»Π΅Π΄ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π° Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ°Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠ±ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΡΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΡΡΠΊΠΎΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ ΠΈ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ ΡΡΠ΅Π· Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π³ΠΎΡΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΄ΠΈΡΠΊΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ Π΅Π΄ΡΡΠΈ Π½Π° WWW-Authenticate ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠ° Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΡΡΠ»ΡΠ³Π°ΡΠ° Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° βΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈβ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Ρ Π΅Π΄ΡΡΠ° WWW-Authenticate ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° OAuth Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ Π·Π° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ Π²Π°ΡΠΈΡΠ΅, Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π° Π·Π°ΡΠ²ΠΊΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ "%(Π½Π°ΠΏΡΠ΅Π΄-ΠΎΡΠ·Π°Π΄: )", ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±ΡΠΎΡ Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΠ²Π°ΡΠΈΡΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΠΎΠ½, ΡΠΏΡΡΠΌΠΎ Π΄ΡΡΠ³ ΠΊΠ»ΠΎΠ½ (ΠΊΠΎΠ»ΠΊΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΎΠ½ ΠΈΠ·ΠΎΡΡΠ°Π²Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΡΠ΅Π²Π°ΡΠ²Π° Π΄ΡΡΠ³ Π½Π° Π½ΠΈΠ²ΠΎ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ). ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ: "git rev-list --count main..my-feature", Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅, ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π·Π° Π΄Π°Π΄Π΅Π½ ΠΊΠ»ΠΎΠ½, ΠΈ "git rev-list --count my-feature.. main", Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ. Π‘Π΅Π³Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ·ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²Π΅Π΄Π΅Π½ΠΈ Π΄ΠΎ Π΅Π΄Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈΡΠ΅ Π·Π° ΠΏΠΈΡΠ°Π½Π΅ ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΡΠ° Π·Π°Π΄ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΠΈ ΠΊΠ»ΠΎΠ½, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅Π΄Π½ΠΎΡΠ΅Π΄ΠΎΠ²: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(Π½Π°ΠΏΡΠ΅Π΄-ΠΎΡΠ·Π°Π΄:origin/HEAD)' \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-refβΠΈΠ·ΠΊΠ»ΡΡΠ΅ΡΠ΅ 16 96 tb/roaring-bitmaps 47 3 Π²ΠΌΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ Π΅ 17 ΠΏΡΡΠΈ ΠΏΠΎ-Π±Π°Π²Π΅Π½: $ git for-each-ref - format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | while read ref do ahead="$(git rev-list --count origin/HEAD..$ref)" back="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$Π½Π°ΠΏΡΠ΅Π΄" "$ΠΎΡΠ·Π°Π΄" Π³ΠΎΡΠΎΠ²ΠΎ | ΠΊΠΎΠ»ΠΎΠ½Π° -t tb/cruft-extra-tips 2 96 tb/for-each-refβexclude 16 96 tb/roaring-bitmaps 47 3
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ β--porcelainβ ΠΊΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit fetchβ, ΠΊΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΈΠ·Ρ ΠΎΠ΄ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ β β, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΠ»ΠΈΠ², Π½ΠΎ ΠΏΠΎ-ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° "fetch.hideRefs" Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ "git fetch" ΡΡΠ΅Π· ΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠ°ΡΡ ΠΎΡ Π²ΡΡΠ·ΠΊΠΈΡΠ΅ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄Π°Π»ΠΈ ΡΡΡΠ²ΡΡΡΡ Π΅ ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» ΠΏΡΠ»Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠΏΠ΅ΡΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅, ΠΊΠ°ΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° ΡΠ°ΠΌΠΎ Π΄ΠΎ ΡΡΡΠ²ΡΡΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·Π²Π»ΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΏΡΠΎΡΠ»Π΅Π΄Π΅Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ Π²ΡΡΠ·ΠΊΠΈ, ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΡΠ·ΠΊΠΈ Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ, Π°Π΄ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Π΄ΠΎ $remote ΡΠ΅Π»Π΅Π²ΠΈΡ ΡΡΡΠ²ΡΡ, Π½Π°ΠΌΠ°Π»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° "git fetch" ΠΎΡ 20 ΠΌΠΈΠ½ΡΡΠΈ Π½Π° 30 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "git fsck" ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°, ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΡΠΌΠ° ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π² ΡΠ°ΡΡΠ΅ΡΠ½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ.
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "git clone --local" Π²Π΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΎΠΏΠΈΡ Π·Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ Π² $GIT_DIR.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru