ΠΠΎΡΠ»Π΅ ΡΡΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΡΠ΅ΠΊΡΡΠ°ΠΌΠΈ Git 2.41. Git ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ , Π½Π°Π΄ΡΠΆΠ½ΡΡ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π±Π°Π·ΠΈΡΡΡΡΠΈΠ΅ΡΡ Π½Π° ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡΠ»ΠΈΡΠ½ΠΈΠΈ Π²Π΅ΡΠΎΠΊ. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΈΡΡΠΎΡΠΈΠΈ ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ «Π·Π°Π΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ΅, ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ².
ΠΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠΎΡΠ»ΡΠΌ Π²ΡΠΏΡΡΠΊΠΎΠΌ Π² Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΎ 542 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΠΈ 95 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ 29 Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°:
- Π£Π»ΡΡΡΠ΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (unreachable), Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΡΡΡΠ»ΠΊΠΈ (Π½Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π²Π΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π³ΠΈ). ΠΠ΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ΄Π°Π»ΡΡΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, Π½ΠΎ Π΄ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ Π³ΠΎΠ½ΠΊΠΈ. ΠΠ»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π½Π°Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ Π½ΠΈΠΌ ΠΌΠ΅ΡΠΎΠΊ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ ΠΈΡ
Π² ΠΎΠ΄Π½ΠΎΠΌ pack-ΡΠ°ΠΉΠ»Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π Π°Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΡ
ΡΠ°Π½ΡΠ»ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ²Π΅ΠΆΠΈΡ
Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡΡΠΈΡ
ΠΏΠΎΠ΄ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ Π΄Π»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ «cruft packs», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Ρ
ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ pack-ΡΠ°ΠΉΠ»Π΅, Π° Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΡΡΠ°ΠΆΠ°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅, Ρ
ΡΠ°Π½ΠΈΠΌΠΎΠΉ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ «.mtimes» ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ «.idx».
- ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° (revindex) Π΄Π»Ρ pack-ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ torvalds/linux ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ «git push» Π² 1.49 ΡΠ°Π·Π°, Π° ΠΏΡΠΎΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ «git cat-file —batch=’%(objectsize:disk)'» Π² 77 ΡΠ°Π·. Π€Π°ΠΉΠ»Ρ («.rev») Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Ρ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ «.git/objects/pack».
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ Git Ρ ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ . ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² pack-ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² ΡΠΎΡΠΌΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ git fetch ΠΈ git push). ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ pack-ΡΠ°ΠΉΠ»Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» (.idx), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² pack-ΡΠ°ΠΉΠ»Π΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠΊΠ»ΡΡΡΠ½Π½ΡΠΉ Π² Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π½Π°ΡΠ΅Π»Π΅Π½ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² pack-ΡΠ°ΠΉΠ»Π΅. Π Π°Π½Π΅Π΅ ΡΠ°ΠΊΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π½Π° Π»Π΅ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·Π±ΠΎΡΠ° pack-ΡΠ°ΠΉΠ»Π° ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΈ Π²ΡΠ½ΡΠΆΠ΄Π°Π»ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· ΠΏΠ°Ρ «ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΏΠΎΠ·ΠΈΡΠΈΡ» ΠΈ Π΅Π³ΠΎ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ pack-ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΡΠΌΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ Π² 62 ΡΠ°Π·Π° Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΡΠ²ΡΠ·ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π½Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ. ΠΠΎΡΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π»ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ fetch ΠΈ push Π·Π° ΡΡΡΡ ΠΏΡΡΠΌΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Ρ Π΄ΠΈΡΠΊΠ°.
- Π ΠΏΡΠΎΡΠΎΠΊΠΎΠ» «credential helper», ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΡΠΌ c ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² WWW-Authenticate ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ ΡΡΡΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° WWW-Authenticate ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ scope-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ OAuth Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌ ΠΈ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ².
- Π ΠΊΠΎΠΌΠ°Π½Π΄Ρ for-each-ref Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ «%(ahead-behind:<base>)», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΡΠ»Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΠΊΠΈ (Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π° Π²Π΅ΡΠΊΠ° ΠΎΡΡΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²). Π Π°Π½Π΅Π΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π²Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: «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) %(ahead-behind:origin/HEAD)’ \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—exclude 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)» behind=»$(git rev-list —count $ref..origin/HEAD)» printf «%s %d %d\n» «$ref» «$ahead» «$behind» done | column -t tb/cruft-extra-tips 2 96 tb/for-each-ref—exclude 16 96 tb/roaring-bitmaps 47 3
- Π ΠΊΠΎΠΌΠ°Π½Π΄Ρ «git fetch» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ «—porcelain», ΠΏΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ²ΠΎΠ΄ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ «<flag> <old-object-id> <new-object-id> <local-reference>», ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΉ, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ .
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° «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