ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ ΡΠ΅Π»ΠΈΠ· Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅ Git 2.55. Π‘ΡΠ΅Π΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ: Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Ρ Rust, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° fsmonitor Π·Π° Linux, Π½ΠΎΠ²Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ MIDX ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π° βgit history fixupβ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΡΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° hook-ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° βgit format-revβ. ΠΠΎΠ΄ΡΡ Π½Π° Git ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· GPLv2+.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΎ Ρ ΠΏΡΠ΅Π΄Ρ ΠΎΠ΄Π½ΠΈΡ Π²ΡΠΏΡΡΠΊ, Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΡΠ° ΠΏΡΠΈΠ΅ΡΠΈ 505 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 100 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, 33 ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π²Π·ΠΈΠΌΠ°Ρ ΡΡΠ°ΡΡΠΈΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Git Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ. ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ (1, 2, 3):
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Rust. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ rustc
Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π² ΡΠΏΠΈΡΡΠΊΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π±Π΅Π· Rust ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ»Π°Π³Π° βNO_RUST=1β ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° make ΠΈΠ»ΠΈ β-Drust=disabledβ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° βmeson configureβ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Ρ Rust ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π΄ΠΎ Π²Π΅ΡΡΠΈΡ Git 3.0, Π² ΠΊΠΎΡΡΠΎ Rust ΡΠ΅ ΡΡΠ°Π½Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ. ΠΠ° Rust Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠ° Π·Π° ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ Ρ Π΅ΡΠΎΠ²Π΅ SHA-1 ΠΈ SHA-256, Π° ΡΡΡΠΎ ΠΈ Π½ΡΠΊΠΎΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π° Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΄ΡΠ»ΠΆΠΈΠ½Π°. Π Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΏΠ΅ΡΠ΅ΠΏΡΠ°Π²ΠΊΠ° Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Git Π½Π° Rust. - Π Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° βgit historyβ, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ°, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° βgit history fixupβ Π·Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΈΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° βfixupβ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ΅Π· βgit addβ, Π² ΠΏΠΎ-ΡΠ°Π½Π΅Π½ ΠΊΠΎΠΌΠΈΡ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΈΡΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βgit commit βfixup=β ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° βgit rebase βautosquash ~β.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Linux Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠΎΠ½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ fsmonitor, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ΠΈ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° inotify ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΎΠ±Ρ ΠΎΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°ΡΠΎ βgit statusβ. ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° βcore.fsmonitorβ.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git repackΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌΡΡ Β«βwrite-midx=incrementalΒ», ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π½ΠΎΠ²Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ MIDX ΠΈΠ½Π΄Π΅ΠΊΡ (multi-pack index), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° Π΄Π° ΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ. Π ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅ΡΠ΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠΎ Π΅Π΄ΠΈΠ½ Π³ΠΎΠ»ΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΏΠΎ pack ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ»ΠΎΠ΅Π²Π΅ β Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΠΎΠΉ ΠΎΠ±Ρ
Π²Π°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ pack ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ bitmap ΡΠ°ΠΉΠ». ΠΠΎΠ΄ΠΎΠ±Π½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² Π½ΠΎΠ²ΠΈ pack ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΡΠΈΠΊΡΠ΅ΠΏΡΠΉΠΊΠΈ Π½ΠΎΠ²ΠΈ ΡΠ»ΠΎΠ΅Π²Π΅ ΠΊΡΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠΉΠ²Π°Ρ Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅.
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git repack βwrite-midx=incrementalΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ Π½ΠΎΠ² ΡΠ»ΠΎΠΉ ΠΊΡΠΌ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ MIDX ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΎΠ±Ρ Π²Π°ΡΠ°Ρ Π½Π°ΡΠΊΠΎΡΠΎ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ pack ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Β«βgeometricΒ», Π½ΠΎΠ²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΡ Π½ΠΎΠ²ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ pack ΡΠ°ΠΉΠ»Π° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ pack ΡΠ°ΠΉΠ» ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΡΠ΅Π΄Π½ΠΈ ΡΠ»ΠΎΡ ΠΎΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ MIDX ΠΈΠ½Π΄Π΅ΠΊΡ. ΠΠΎΠ΄ΠΎΠ±Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Β«git repackΒ» Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ Π³ΠΎΡΠ½ΠΈΡΠ΅ ΡΠ»ΠΎΠ΅Π²Π΅, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΡΠ°ΡΠΈΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ»ΠΎΠ΅Π²Π΅ Π½Π΅ΠΏΠΎΠΊΡΡΠ½Π°ΡΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈ Π½Π΅ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° ΠΎΡ ΡΠ»ΠΎΠ΅Π²Π΅, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΉΠΊΠΈ ΠΎΠ±ΡΠΈΡ Π±ΡΠΎΠΉ ΡΠ»ΠΎΠ΅Π²Π΅ Π½Π° Π½ΠΈΠ²ΠΎ, ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π½Π° Π»ΠΎΠ³Π°ΡΠΈΡΡΠΌΠ° Π½Π° ΠΎΠ±ΡΠΈΡ Π±ΡΠΎΠΉ ΠΎΠ±Π΅ΠΊΡΠΈ.
- ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡΡΠ° Π½Π° Π±ΠΈΡΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΎΠ±Ρ ΠΎΠ΄ Π½Π° Π΄ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·Π»ΠΈΡΠ½Π°ΡΠ° ΡΠ΅ΠΊΡΡΡΠΈΡ, ΠΊΠ΅ΡΠΈΡΠ° ΠΏΠΎΠ·ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅, ΡΠΎΡΡΠΈΡΠ° Π±ΠΈΡΠΎΠ²ΠΈΡΠ΅ ΠΊΠ°ΡΡΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° XOR ΠΈ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠΎΠ΄Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±ΠΈΡΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ Π·Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΠΈΠ²Π°Π½Π΅ (pseudo-merge). Π ΡΠ΅ΡΡΠΎΠ²ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π±ΠΈΡΠΎΠ²ΠΈ ΠΊΠ°ΡΡΠΈ ΠΎΡ 612 Π½Π° 294 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ Ρ ΡΠΊΠΎΠ²Π΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π₯ΡΠΊΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΎΠ±ΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ»ΠΈ Π³ΠΎ ΠΎΡΡΠ΅ΡΠ°Ρ, ΠΊΠ°ΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠΈ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΊΡΠΌ ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΠ°ΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ, Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Ρ ΡΠΊΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Ρ Π»ΠΈΠ½ΡΠ΅ΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ unit-ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ. Π₯ΡΠΊΠΎΠ²Π΅ΡΠ΅, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Ρ ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Β«hook.ΠΈΠΌΠ΅_Ρ ΡΠΊΠ°.parallel = trueΒ». ΠΡΠΎΡΡ Π½Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ hook.jobs, hook..jobs ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΡΡΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Β«-jΒ».
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git pack-objects βpath-walkΒ» Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΈΠ»ΡΡΠΈ ΠΊΠ°ΡΠΎ Β«blob:noneΒ», Β«blob:limit=Β», Β«tree:0Β», Β«object:type=Β», Β«sparse:Β» ΠΈ Β«combine:Β». Π ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ ΡΠ΅ΡΡ, ΠΎΡΡ Π²ΡΡΠ»ΡΠ½Π΅ΡΠΎ Π½Π° Π±Π»ΠΎΠ±ΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Β«βpath-walkΒ» Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠΎΡΠΌΠΈΡΠ°Π½ΠΈΡ pack-ΡΠ°ΠΉΠ» Ρ 16%.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«git format-revΒ» Π·Π° ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ Π² ΡΠΏΠΈΡΡΡΠΈΡΠ΅ Ρ ΠΊΠΎΠΌΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅ΡΠ°ΡΠΈ ΡΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ΅ΠΊΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Ρ
ΡΠΊΠΎΠ²Π΅ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅).
git last-modified | git format-rev βstdin-mode=text βformat=%an
Junio C Hamano builtin/commit.c
- ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΠΊΡΡΠ° Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅, ΠΏΡΠ΅Π΄Π°Π²Π°Π½ΠΈ ΡΡΡΠ²ΡΡΠ°.. ΠΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΡΡΠ²ΡΡ ΡΠ°ΠΊΠΈΠ²Π° escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΡΠΊΡΠΈΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π· escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π·Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΡΠ° ΠΈ ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠ°. ΠΠΎΠ΄ΠΊΡΠ΅ΠΏΠ°ΡΠ° Π½Π° escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π·Π° ΠΎΡΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π΅ Π·Π°ΠΏΠ°Π·Π΅Π½Π°.
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git checkout -mΒ» Π²Π΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ²Π°ΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² stash-ΠΎΠ±Π»Π°ΡΡΡΠ°, Π±Π΅Π· Π½ΡΠΆΠ΄Π° ΠΎΡ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git pushΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΡ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π²ΡΠ½ΡΠ½ΠΈ Git-ΡΡΡΠ²ΡΡΠ° Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½Π° main Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΡΡΡΠ²ΡΡ, Π½ΠΎ ΠΈ Π½Π° ΠΎΠ³Π»Π΅Π΄Π°Π»Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ Π³ΡΡΠΏΠ° Β«publishΒ» ΠΎΡ ΡΡΡΠ²ΡΡΠΈ Β«githubΒ», Β«gitlabΒ» ΠΈ Β«mirrorΒ»:
git config remotes.publish Β«github gitlab mirrorΒ»
git push publish main - Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«git log βgraphΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡΡΠ° Β«βgraph-lane-limit=Β» Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΈΡΠ΅ Π»Π΅Π½ΡΠΈ ΠΏΡΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΌΡΡΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π° Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠΎΠΌΠΈΡΠΈΡΠ΅ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Ρ Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅.
β¦
* | | | | 619931f561 Merge branch βdl/posix-unused-warning-clangβ
|\ \ \ \ \
| * | | | ~ cf48887610 compat/posix.h: ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° GIT_GNUC_PREREQ() ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
| * | | | ~ ffd45926dc compat/posix.h: ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° GIT_GNUC_PREREQ() ΠΈ UNUSED
|\ \ \ \ \~
| * | | | ~ 3f5203eeb4 ls-files: ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° pathspec ΠΏΡΠ΅Π΄ΠΈ lstat - Π ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ Β«git logΒ» ΠΈ Β«git rev-listΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡΡΠ° Β«βmax-count-oldest=, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅ΡΠ°Ρ N Π½Π°ΠΉ-ΡΡΠ°ΡΠΈ ΠΊΠΎΠΌΠΈΡΠΈ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
