Git 2.29.0 поставляется с экспериментальной поддержкой SHA-256, улучшениями и многим другим

Git - одна из самых популярных систем контроля версий, надежный и высокопроизводительный, предоставляющий гибкие инструменты нелинейной разработки, основанные на ветвлении и слиянии. Чтобы гарантировать целостность истории и устойчивость к изменениям «задним числом», в каждом коммите используется неявное хеширование всей предыдущей истории, также возможно сертифицировать с помощью цифровых подписей отдельных тегов и коммитов разработчиков.

Недавно анонсирована его новая версия "Git 2.29.0" и по сравнению с предыдущей версией, В новую версию внесено 627 изменений., подготовленный при участии 89 разработчиков, 24 из которых участвовали в разработке впервые.

Основные новые функции Git 2.29.0

В этой новой версии включает экспериментальную опцию использования алгоритма хеширования SHA-256 вместо скомпрометированного SHA-1 при записи объектов в репозиторий. Хэш создается из содержимого каждого объекта в Git и является его уникальным идентификатором. Любое изменение данных или заголовков объекта приводит к изменению его идентификатора. Возникновение коллизий в алгоритме хеширования теоретически не исключает формирования двух разных наборов данных с результирующим хешем.

К сожалению, алгоритм SHA-1 оказался не устойчивым к образованию искусственных коллизий, но к совершению реальных атак на подмену объектов в Git посредством манипуляции коллизиями SHA-1 маловероятно, так как для аннулирования выделенного объекта необходимо, чтобы аннулированный объект уже содержал паттерн коллизии, то есть произвольный блок не подлежит замене.

Поскольку каждое столкновение требует огромных вычислительных ресурсов, уже рассчитанные шаблоны известны которые приводят к коллизиям, и ранее в Git была добавлена ​​проверка попыток их использования на объектах.

На этом этапе разработки вы можете выбирать только между SHA-1 и SHA-256, но пока вы не можете комбинировать разные хэши в репозитории одновременно. Кроме того, на данный момент ни один поставщик Git, включая GitHub, не поддерживает репозитории с хешами SHA-256. В будущем планируется добавить функции переносимости.

Еще одно изменение в этой новой версии - в команде "Git fetch" и "git push" тем, кто добавляет поддержку эксклюзивных спецификаций ссылок (refspec), расширяет права сопоставления ссылок между ветвями в локальных и внешних репозиториях. Исключение эталонных спецификаций может быть полезно в ситуациях, когда вам нужно не только выбрать, но и исключить определенные ветви из сопоставления. Например, когда нужно было проверить все ветки «refs / heads / *», кроме одной «refs / Heads / ref-to-exclude», сначала нужно было указать полный список, явно включая каждую ветку.

В "git for-each-ref" добавлены новые поля. который можно указать с помощью параметра "-format" в дополнение к имени, типу и идентификатору объекта. Например, добавленные поля content: size, subject: sanitize и modifier: short для отображения коротких идентификаторов объектов. Также разрешено указать несколько аргументов «–merged» и «–no-merged» для фильтрации ссылок.

Когда во время операции "git merge" возникает конфликт, заголовок сообщения фиксации теперь заключен в квадратные скобки для более четкого разделения данные подтверждения из диагностических сообщений Git.

Добавлен новый параметр «merge.renormalize», при котором операции проверки и возврата выполняются для каждого этапа трехсторонней комбинации.

Была произведена откат второй версии протокола связи Git, который был отключен в версии 2.27 и используется, когда клиент удаленно подключается к серверу Git. Выявлена ​​и исправлена ​​ошибка, вызывающая проблемы со стабильностью.

В команду git bisect добавлен параметр –first-parent.что используется для идентификации ревизии, в которой произошло регрессивное изменение, чтобы изменить выбор коммитов, которые проходят между известной рабочей проверкой и проверкой, в которой возникла проблема. Если вы укажете «–first-parent», учитываются только коммиты в объединенной ветке, игнорируя саму фиксацию слияния.

Повышена эффективность внутренней команды "git index-pack". Используется при запуске «git push» или «git fetch» ​​при распараллеливании упаковки индекса в многоядерных системах.

Добавлен параметр «merge.suppressDest», который управляет добавлением фразы «in $ dest» к сообщениям «Объединить $ upstream в $ dest», выдаваемым при объединении ветвей (ранее фраза «in $ dest» не была отображается для основной ветки по умолчанию).

Исправлена ​​уязвимость в бэкэнде contrib / mw-to-git (не создается по умолчанию) для отправки и получения данных из MediaWiki. Проблема позволяла организовать выполнение кода при доступе к экземпляру MediaWiki, находящемуся под контролем злоумышленника.

Наконец, если вы хотите узнать об этом больше, вы можете проверить подробности По следующей ссылке.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.