Git 2.54

Git 2.54

Представлен izdanje distribuiranog sistema za upravljanje izvorom kodova Git 2.54. Git se odlikuje visoko zmogljivostjo in ponuja orodja za nelinearni razvoj, ki temeljijo na razvejanju in združevanju vej. Za zagotavljanje celovitosti zgodovine in odpornosti proti spremembam „za nazaj“ se uporablja implicitno hashevanje celotne prejšnje zgodovine v vsakem commitu ter overitev z digitalnimi podpisi razvijalcev za posamezne oznake in commite. Koda Git se distribuira pod GPLv2+ licencom.

V primerjavi s prejšnjo različico je bilo v novo različico sprejetih 770 sprememb, ki so jih pripravili 137 razvijalcev (66 jih je sodelovalo pri razvoju Git prvič).

Glavne novosti:

  • Uvedena je bila naloga „git history“, ki ponuja eksperimentalne možnosti za prepisovanje zgodovine sprememb, lažje in varnejše za uporabo kot preobrazba commitov z nalogo git rebase. Na voljo sta dve operaciji:

    • git history reword za prepisovanje sporočila v določenem commitu brez spreminjanja delovnega drevesa in indeksa (razen opombe, ostalo ostane nedotaknjeno). Na primer, za popravo tipkarske napake.
    • git history split za interaktivno razdelitev določenega commita na dva različna commita s premikanjem izbranih delov iz izvirnega commita v dodatni commit.

    V prihodnjih izdajah se pričakuje dodajanje dodatnih nalog: git history fixup za popravljanje commita, git history drop za brisanje commita, git history reorder za spremembo zaporedja commitov in git history squash za združevanje commitov.

  • Uvedena je bila nova metoda določanja upravljavcev (hook) v konfiguracijskih datotekah. Namesto da bi skripte z upravljavci shranjevali v imeniku .git/hooks v vsakem repozitoriju, je zdaj mogoče ukaze za klic upravljavcev neposredno določiti v konfiguracijskih datotekah. Nastavitve je mogoče vezati na repozitorij ali navesti v konfiguracijskih datotekah, ki veljajo za vse repozitorije ( /etc/gitconfig) ali uporabniške repozitorije (~/.gitconfig). Možno je vezati več upravljavcev na eno dejanje. Skripti iz .git/hooks se še vedno izvajajo, vendar se sprožijo po upravljavcih iz konfiguracijskih datotek. Za ogled seznama upravljavcev je treba uporabiti ukaz git hook list, za selektivno onemogočanje klica upravljavcev pa nastavitev hook..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

  • V ekipi «git maintenance» je privzeto aktivna strategija geometric (git config set maintenance.strategy geometric), ki omogoča skrajšanje časa vzdrževanja obsežnih monorepo. V primerjavi s prejšnjo strategijo, ki je uporabljala logiko, kot jo uporablja ukaz git gc, nova strategija preprečuje prepakiranje vseh objektov in izključuje prekomerno zahtevne operacije, kot je združevanje vseh pakirnih datotek (združevanja se opravi postopoma in brez čiščenja izbrisanih objektov, kadar je to mogoče).
  • Baza podatkov objektov (ODB) in pripadajoči API-ji so preneseni na novo arhitekturo, ki temelji na uporabi priključnih zadnjih strani. Izvedena restrukturacija abstrahira format shranjevanja objektov in bo v prihodnosti omogočila uvedbo funkcionalnosti, kot so alternativni zadnji deli in formati objektov, na primer za bolj učinkovito shranjevanje obsežnih binarnih datotek ali za optimizacijo delovanja obsežnih git-hostingov.
  • V ekipi «git repo structure», ki prikazuje podatke o strukturi repozitorija, omogoča prikaz ne le skupne velikosti, temveč tudi največjih objektov vsake vrste, kar omogoča oceno velikosti brez uporabe zunanjega orodja. git-sizer.

$ git repo structure … | * Največji objekti | | | * Delo | | | * Maksimalna velikost [1] | 17.23 KiB | | * Maksimalni starši [2] | 10 | | * Drevesa | | | * Maksimalna velikost [3] | 58.85 KiB | | * Maksimalni vnosi [4] | 1.18 k | | * Blobi | | | * Maksimalna velikost [5] | 1019.51 KiB | | * Oznake | | | * Maksimalna velikost [6] | 7.13 KiB |

  • V ekipi «git replay», ki se uporablja namesto git rebase za ponovno ustvarjanje zgodovine na strežniku brez delovnega drevesa, vključuje privzeto atomsko posodobitev povezav (namesto izhoda seznama ukazov update-ref za ročno izvajanje), implementirana je tudi možnost —revert za razveljavitev sprememb iz serije commitov, zagotovljeno je zavračanje nastalih praznih commitov in omogočeno ponovno ustvarjanje zgodovine vse do koreninskega commita.
  • V «git rev-list» in podobne ukaze je dodana možnost —maximal-only za prikaz le commitov, ki jih drugi commitni ne dosežejo.
  • V ukaz «git repo info» je dodana možnost —keys za izpis seznama vseh znanih ključev.
  • V ekipi «git add -pПри навигации между блоками кода с помощью клавиш «J» и «K» предусмотрено обозначение уже одобренных и пропущенных блоков. Добавлена опция —no-auto-advance для отключения автоматического перехода к следующему файлу, чтобы иметь возможность вернуться к предыдущим файлам перед коммитом.
  • Проведена оптимизация веб-интерфейса «gitweb» для работы с мобильных устройств.
  • V ekipi «git apply –directory» перед использованием предусмотрена нормализация файловых путей, таких как ./un/../normalized/path.
  • Документирована возможность добавления собственных подкоманд через размещение файлов git- в каталоге с исполняемыми файлами.
  • V ukaz «git send-email» добавлена поддержка клиентских сертификатов.
  • Для команды «git status» реализована настройка status.compareBranches, через которую можно указать ветки, с которыми будет производиться сравнение текущей ветки:

[status] compareBranches = @{upstream} @{push}

  • V «git rebase» добавлена опция —trailer для упрощения добавления метаданных ко всем коммитам:

git rebase —trailer "Reviewed-by: Test "`

  • V ukaz «git fast-import» добавлена возможность замены подписей для коммитов, которые стали невалидными после импорта.
  • Добавлена поддержка упаковки (compaction) многопакетных индексов MIDX (multi-pack index), при которой объединяются мелкие слои MIDX-индекса с информацией о доступности объектов и связанные с ними 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-ключей, но которые были валидны на момент подписания коммита. Подобные подписи теперь отображаются как корректные с пометкой об устаревании ключа (ранее они подсвечивались красным цветом, что создавало впечатление об их некорректности).
  • Ob obravnavi zahtevkov do repozitorijev prek HTTP je bila zagotovljena obdelava napake s kodo 429 (Preveč zahtevkov). Zahtevki, ki so se končali s to napako, se zdaj ne obravnavajo več kot usodna težava, temveč kot začasna napaka, za katero je treba operacijo po določenem času ponoviti. Zamuda pred ponovitvijo se določi s pomočjo možnosti http.retryAfter, število ponovitev – http.maxRetries, čas čakanja – http.maxRetryTime.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster