2 ΡΠ΅Π²ΡΡΠ°ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΈΠ·Π΄Π°Π΄Π΅Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΡΠ΅ΠΊΡΡ Git 2.53.
Git ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π²Π° Ρ Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, ΠΎΡΠ½ΠΎΠ²Π°Π²Π°ΡΠΈ ΡΠ΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅. ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ βΠ½Π°Π·Π°Π΄ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎβ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ΡΠ²Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΈΡ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Ρ ΡΠΈΡΡΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π·Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠ°Π³ΠΎΠ²Π΅ ΠΈ ΠΊΠΎΠΌΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° Git ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π· GPLv2+.
Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ, Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ΅ΠΌΠ° 466 ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Ρ ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° 70 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (21 ΠΎΡ ΠΊΠΎΠΈΡΠΎ Π·Π° ΠΏΡΡΠ² ΠΏΡΡ ΡΡΠ°ΡΡΠ²Π°Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Git). ΠΡΠ½ΠΎΠ²Π½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π·Π° ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ geometric (git repack βgeometric) ΠΊΡΠΌ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π² ΡΠ΅ΠΆΠΈΠΌ promisor (Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΡ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ). ΠΡΠΈ ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Ρ ΠΎΠΏΡΠΈΠΈΡΠ΅ βgeometric, pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .promisor ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΎ. Π‘ΡΡΠ°ΡΠ΅Π³ΠΈΡΡΠ° geometric ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎΡΠΎ ΠΏΡΠ΅Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΡΠΎ ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (Π·Π°ΠΏΠ°Π·Π²Π° ΡΠ΅ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ΅ΡΠΈΡ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° pack-ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΡΠ»Π΅Π΄Π²Π°Ρ pack-ΡΠ°ΠΉΠ» ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ½Π΅ Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ).
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° git fast-import Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡΡΠ° βsigned-commits=strip-if-invalid Π·Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠΎΠ²ΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΎΡ Π²Π½Π°ΡΡΠ½ΠΈΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΡΠ°Π½Π°Π»ΠΈ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²Π½Π°ΡΡΡ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, Π±Π΅Π· ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΈ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ ΡΠΌΠΈΡΡΠ». ΠΠΏΡΠΈΡΡΠ° strip-if-invalid ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΠΈ ΠΏΡΠ΅ΠΏΠΎΠ΄ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΈΠ·Π³ΡΠ±ΠΈΠ»ΠΈ Π°ΠΊΡΡΠ°Π»Π½ΠΎΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ.
- Π ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° git repo structure Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΄ΠΎΡΡΠΈΠΆΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ (reachable) Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Ρ ΡΠ°Π·Π±ΠΈΠ²ΠΊΠ° ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π² ΡΠ΅ΡΠΈΠΌ Π²ΠΈΠ΄ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ Π·Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ ΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ Π·Π° ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ Π·Π°Π΅ΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΎΠ±ΡΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Π½Π° Π΄ΠΈΡΠΊΠ°:
$ git repo structure | Π‘ΡΡΡΠΊΡΡΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ | Π‘ΡΠΎΠΉΠ½ΠΎΡΡ | | βββββββ | βββ- | | * References | | | * Count | 1.78 k | | * Branches | 5 | | * Tags | 1.03 k | | * Remotes | 749 | | * Others | 0 | | | | | * Reachable objects | | | * Count | 421.37 k | | * Commits | 88.03 k | | * Trees | 169.95 k | | * Blobs | 162.40 k | | * Tags | 994 | | * Inflated size | 7.61 GiB | | * Commits | 60.95 MiB | | * Trees | 2.44 GiB | | * Blobs | 5.11 GiB | | * Tags | 731.73 KiB | | * Disk size | 301.50 MiB | | * Commits | 33.57 MiB | | * Trees | 77.92 MiB | | * Blobs | 189.44 MiB | | * Tags | 578.13 KiB |
- ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° git maintenance ΠΏΠΎΠ»ΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π° is-needed, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ°ΠΌΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ.
- Π Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° git replay ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ΡΠ΅ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΡΠ΄Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΎΡΠ°Ρ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ΡΠ΅, Π±Π΅Π· ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° git blame Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠΏΡΠΈΡΡΠ° βdiff-algorithm=.
- Π ΠΊΠΎΠΌΠ°Π½Π΄Π° git repo info Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΎΠΏΡΠΈΡ βall.
- ΠΡ Git-for-Windows Π΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»Π½ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows.
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust, Π² Git 2.53. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π²ΡΡΡΠ½ΠΎΡΡ Π² Π²Π΅ΡΡΠΈΡΡΠ° Git 2.53 ΡΠ°ΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Rust (Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π±Π΅Π· GNU sed), Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Ρ Rust ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Makefile ΠΎΡΡΠ°Π²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½Π° (ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ»Π°Π³ WITH_RUST), Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Meson Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ rustc. Π Π²Π΅ΡΡΠΈΡΡΠ° Git 3.0 ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ Rust ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ° Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π΄ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru
