Выпуск систСмы управлСния исходными тСкстами Git 2.44

ПослС Ρ‚Ρ€Ρ‘Ρ… мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск распрСдСлСнной систСмы управлСния исходными тСкстами Git 2.44. Git являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· самых популярных, Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Ρ… ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм управлСния вСрсиями, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π³ΠΈΠ±ΠΊΠΈΠ΅ срСдства Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ Π½Π° ΠΎΡ‚Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΈ ΠΈ слиянии Π²Π΅Ρ‚ΠΎΠΊ. Для обСспСчСния цСлостности истории ΠΈ устойчивости ΠΊ измСнСниям «Π·Π°Π΄Π½ΠΈΠΌ числом» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ нСявноС Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ истории Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ удостовСрСниС Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ подписями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π³ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ². Код Git распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ GPLv2+.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ выпуском Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ принято 503 измСнСния, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ участии 85 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 34 Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ приняли участиС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая ΠΊΠΎΠΌΠ°Π½Π΄Π° «git replay», которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ «git rebase» ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для воссоздания истории Π½Π° сСрвСрС Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° (bare-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π½Π΅ содСрТащий Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°), ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Π΅Ρ‚ΠΎΠΊ, выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ rebase для Π²Π΅Ρ‚ΠΎΠΊ, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Ρ‘Π½Π½Ρ‹Ρ… Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΈΠ»ΠΈ просто для ускорСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ слияния.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° систСмы Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ GitLab CI.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «git add» ΠΈ «git stash» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΏΡƒΡ‚Π΅ΠΉ «:(attr:…)», Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠ΅ΠΉ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ «git show». НапримСр «git add ‘:(attr:~binary)'» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для добавлСния всСх тСкстовых (Π½Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ…) Ρ„Π°ΠΉΠ»ΠΎΠ² Π² индСкс. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ выпускС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ «builtin_objectmode» для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΠΎ ΠΏΡ€Π°Π²Π°ΠΌ доступа. НапримСр, «git add ‘:(attr:builtin_objectmode=100755)'» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для добавлСния всСх исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ².
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², распрСдСлённых ΠΏΠΎ нСскольким pack-Ρ„Π°ΠΉΠ»Π°ΠΌ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присутствуСт сводный индСкс (multi-pack-index) с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ доступности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (оптимизация, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ вмСсто фактичСской ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° использованиС Π΄Π°Π½Π½Ρ‹Ρ…, ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² pack-Ρ„Π°ΠΉΠ»Π°Ρ…). Начиная с вСрсии 2.44 git ΠΏΡ€ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ²Π΅Ρ€Ρ… Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… pack-Ρ„Π°ΠΉΠ»ΠΎΠ², Π±Π΅Π· нСобходимости ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ рСпозитория Π² ΠΎΠ΄ΠΈΠ½ pack-Ρ„Π°ΠΉΠ». Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ возмоТности слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap

    послС Ρ‡Π΅Π³ΠΎ число pack-Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ «pack-reused … (from N)», ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ «git push».

  • Команда «git rebase —autosquash» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ rebase Π² Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ρ‡Ρ‚ΠΎ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ rebase ΠΈ быстро ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ fixup-исправлСния Π±Π΅Π· инспСктирования списка ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅ мСняя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния GIT_SEQUENCE_EDITOR.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «git merge-file» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—diff-algorithm» для Π²Ρ‹Π±ΠΎΡ€Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ «git checkout -B <branch> [<start-point>]» Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ. Для возвращСния старого повСдСния Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—ignore-other-worktrees».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ присвоСния настройкС «git config advice.pushAlreadyExists» значСния «true», ΡƒΠ±ΠΈΡ€Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ подсказок (hint) ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΈΡ… ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ («Disable this message with…»), Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ мСсто Π½Π° экранС.
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «git for-each-ref» с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «—no-sort», которая Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ Π² Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС (Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ «—no-sort» всё Ρ€Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»Π°ΡΡŒ сортировка ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ). ПослС внСсСния ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ «—no-sort» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ускоряСт «git for-each-ref» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 20% Π² рСпозиториях с большим числом ссылок.
  • Π’ бэкСнд управлСния ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ wincred Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° обновлСния Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² OAuth, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² бэкСндах credential-cache ΠΈ credential-libsecret.
  • Π’ «git fetch» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ «fetch.all», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ «—all» Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru