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

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

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

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«git historyΒ», ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности для пСрСзаписи истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π±ΠΎΠ»Π΅Π΅ простыС ΠΈ бСзопасныС Π² использовании, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«git rebaseΒ». ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:
    • Β«git history reword <commit>Β» для пСрСзаписи сообщСния Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ Π±Π΅Π· измСнСния Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΈ индСкса (ΠΊΡ€ΠΎΠΌΠ΅ примСчания, ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ остаётся Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌ). НапримСр, для исправлСния ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ.
    • Β«git history split <commit>Β» для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ раздСлСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚Π° с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… частСй ΠΈΠ· исходного ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚.

    Π’ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… выпусках оТидаСтся Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄: Β«git history fixupΒ» для исправлСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Β«git history dropΒ» для удалСния ΠΊΠΎΠΌΠΌΠΈΡ‚Π°, Β«git history reorderΒ» для измСнСния порядка слСдования ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ Β«git history squashΒ» для объСдинСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ опрСдСлСния ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² (hook) Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ВмСсто размСщСния скриптов с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Β«.git/hooksΒ» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ нСпосрСдствСнно Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Настройки ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… для всСх Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² (/etc/gitconfig) ΠΈΠ»ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (~/.gitconfig). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° привязка Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ. Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ ΠΈΠ· Β«.git/hooksΒ» ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ послС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΡ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Для просмотра списка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git hook listΒ», Π° для Π²Ρ‹Π±ΠΎΡ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” настройку Β«hook.<name>.enabled = falseΒ». [hook Β«linterΒ»] event = pre-commit command = ~/bin/linter β€”cpp20 [hook Β«no-leaksΒ»] event = pre-commit command = ~/bin/leak-detector $ git hook list pre-commit global linter ~/bin/linter β€”cpp20 local no-leaks ~/bin/leak-detector
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git maintenanceΒ» ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ задСйствована стратСгия Β«geometricΒ» (Β«git config set maintenance.strategy geometricΒ»), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя обслуТивания ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΌΠΎΠ½ΠΎΡ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π². По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π°Π½Π΅Π΅ примСняСмой стратСгиСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git gcΒ», новая стратСгия ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ излишнС рСсурсоёмкиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ слияниС всСх pack-Ρ„Π°ΠΉΠ»ΠΎΠ² (ΠΏΠΎ возмоТности объСдинСниС производится частями ΠΈ Π±Π΅Π· чистки ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²).
  • Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (ODB) ΠΈ связанныС с Π½Π΅ΠΉ API ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° использовании ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… бэкСндов. ΠŸΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½Π½Π°Ρ рСструктуризация абстрагируСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π² дальнСйшСм ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ возмоТности, ΠΊΠ°ΠΊ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ бэкСнды ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π±ΠΎΠ»Π΅Π΅ эффСктивного хранСния ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… git-хостингов.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git repo structureΒ», выводящСй свСдСния ΠΎ структурС рСпозитория, обСспСчСно ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π½ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Π° самых ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π΅Π· использования стороннСй ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ git-sizer. $ git repo structure … | * Largest objects | | | * Commits | | | * Maximum size [1] | 17.23 KiB | | * Maximum parents [2] | 10 | | * Trees | | | * Maximum size [3] | 58.85 KiB | | * Maximum entries [4] | 1.18 k | | * Blobs | | | * Maximum size [5] | 1019.51 KiB | | * Tags | | | * Maximum size [6] | 7.13 KiB |
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git replayΒ», примСняСмой вмСсто Β«git rebaseΒ» для воссоздания истории Π½Π° сСрвСрС Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π°, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ссылок (вмСсто Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΊΠΎΠΌΠ°Π½Π΄ update-ref для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ выполнСния), Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° опция Β«β€”revertΒ» для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ сСрии ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², обСспСчСно отбрасываниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… пустых ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² ΠΈ появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ воссоздания истории Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.
  • Π’ Β«git rev-listΒ» ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”maximal-onlyΒ» для ΠΏΠΎΠΊΠ°Π·Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², нСдостиТимых Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git repo infoΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”keysΒ» для Π²Ρ‹Π²ΠΎΠ΄Π° списка всСх извСстных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git add -pΒ» ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ клавиш Β«JΒ» ΠΈ Β«KΒ» обСспСчСна ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠ° ΡƒΠΆΠ΅ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”no-auto-advanceΒ» для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ автоматичСского ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация web-интСрфСйса Β«gitwebΒ» для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git apply β€”directoryΒ» ΠΏΠ΅Ρ€Π΅Π΄ использованиСм обСспСчСна нормализация Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Β«./un/../normalized/pathΒ».
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния собствСнных ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Β«git-<cmd>Β» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с исполняСмыми Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git send-emailΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° клиСнтских сСртификатов.
  • Для ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«git statusΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° настройка Β«status.compareBranchesΒ», Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сравнСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ. [status] compareBranches = @{upstream} @{push}
  • Π’ Β«git rebaseΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция Β«β€”trailerΒ» для упрощСния добавлСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎ всСм ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ. git rebase β€”trailer Β«Reviewed-by: Test <test@example.com>Β»
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«git fast-importΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Π½Ρ‹ подписСй для ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стали Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Ρ‹ послС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (compaction) ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹Ρ… индСксов MIDX (multi-pack index), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π»ΠΊΠΈΠ΅ слои MIDX-индСкса c ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ доступности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ связанныС с Π½ΠΈΠΌΠΈ bitmap-Ρ„Π°ΠΉΠ»Ρ‹, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ число Π½Π°ΠΊΠΎΠΏΠΈΠ²ΡˆΠΈΡ…ΡΡ слоёв Π² Π΄Π°Π²Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… рСпозиториях.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Β«git backfillΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания Ρ€Π΅Π²ΠΈΠ·ΠΈΠΉ (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²) ΠΈ масок ΠΏΡƒΡ‚Π΅ΠΉ (pathspec) для ограничСния Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… частСй истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. git backfill main~100..main git backfill β€” β€˜*.c’
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Β«git config listΒ» β€” Β«git config -lΒ» ΠΈ Β«git config β€”listΒ».
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС Π½Π΅-ASCII символов Π² ΠΈΠΌΠ΅Π½Π°Ρ… псСвдонимов ΠΊΠΎΠΌΠ°Π½Π΄, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. [alias Β«ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΒ»] command = fetch
  • ИзмСнСно ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ подписСй, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… истёк срок дСйствия GPG-ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ подписания ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ подписи Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ± устарСвании ΠΊΠ»ΡŽΡ‡Π° (Ρ€Π°Π½Π΅Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Π»ΠΈΡΡŒ красным Ρ†Π²Π΅Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ создавало Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΡ… нСкоррСктности).
  • ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ рСпозиториям ΠΏΠΎ HTTP обСспСчСна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибки с ΠΊΠΎΠ΄ΠΎΠΌ 429 (Too Many Requests). Π—Π°Π²Π΅Ρ€ΡˆΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ошибкой запросы Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π΅ ΠΊΠ°ΠΊ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π° ΠΊΠ°ΠΊ врСмСнная ошибка, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-врСмя слСдуСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠΌ задаётся Ρ‡Π΅Ρ€Π΅Π· ΠΎΠΏΡ†ΠΈΡŽ Β«http.retryAfterΒ», число ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΎΠ² β€” Β«http.maxRetriesΒ», врСмя оТидания β€” Β«http.maxRetryTimeΒ».

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ