Π”ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π΅ систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° изходния ΠΊΠΎΠ΄ Git 2.41

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

Π’ сравнСниС с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° вСрсия Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия са ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ 542 измСнСния, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ с участиСто Π½Π° 95 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ 29 участват Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Основни нововъвСдСния:

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° нСдостиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (unreachable), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ссылки (Π½Π΅ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ»ΠΈ Ρ‚Π΅Π³ΠΈ). НСдостиТимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ сборщиком мусора, Π½ΠΎ Π΄ΠΎ удалСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ врСмя ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ состояний Π³ΠΎΠ½ΠΊΠΈ. Для отслСТивания ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° нахоТдСния нСдостиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° привязка ΠΊ Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠΊ с Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ измСнСния ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ Π½Π΅ позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎΠΌ pack-Ρ„Π°ΠΉΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π΅ врСмя измСнСния. Π Π°Π½Π΅Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ нСдостиТимый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сохранялся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ большого числа свСТих нСдостиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π΅Ρ‰Ρ‘ Π½Π΅ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅. Π’ Π½ΠΎΠ²ΠΎΠΌ выпускС для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ нСдостиТимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ задСйствован ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Β«cruft packsΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС нСдостиТимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² ΠΎΠ΄Π½ΠΎΠΌ pack-Ρ„Π°ΠΉΠ»Π΅, Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.mtimesΒ» ΠΈ связываСмой ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ индСксного Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.idxΒ».
    Π”ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π΅ систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° изходния ΠΊΠΎΠ΄ Git 2.41
  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° дискС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ индСкса (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, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π°Ρ‚Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π΅Ρ‡Π΅ Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ диска.

    Π”ΠΎΡΡ‚ΡŠΠΏΠ½Π° Π΅ систСма Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° изходния ΠΊΠΎΠ΄ Git 2.41
  • Π’ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Β«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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster