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

После двух месяцев разработки опубликован выпуск распределенной системы управления исходными текстами Git 2.45. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям «задним числом» используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Код Git распространяется под лицензией GPLv2+.

По сравнению с прошлым выпуском в новую версию принято 540 изменений, подготовленных при участии 96 разработчиков, из которых 35 впервые приняли участие в разработке. Основные новшества:

  • Добавлена предварительная поддержка бэкенда «reftable» для эффективного хранения в репозитории ссылок на ветки и теги. Новый бэкенд использует блочное хранилище, применяемое проектом JGit и оптимизированное для хранения очень большого числа ссылок (традиционные форматы хранения ссылок приводят в репозиториях с большим числом ссылок к ощутимым накладным расходам из-за размещения очень большого числа файлов в одном каталоге в случае хранения ссылок в каталоге $GIT_DIR/refs или необходимости перезаписи одного большого файла при каждом обновлении в случае хранения ссылок в файле $GIT_DIR/packed_refs). Новый бэкенд включается через указание опции »--ref-format=reftable» при инициализации репозитория («git init --ref-format=reftable /path/to/repo») и позволяет ускорить поиск, чтение и запись в репозиториях с большим числом ссылок.

  • Предоставлены средства для обеспечения переносимости между идентификаторами объектов на базе хэшей SHA-1 и SHA-256. Для обеспечения работы с хэшами SHA-1 и SHA-256 в одном репозитории в процессе постепенной миграции на хэши SHA-256 предложен новый формат объектов «compatibility», позволяющий ссылаться на объекты не только по основному хэшу, заданному при инициализации репозитория, но и по запасному хэшу. Например, при инициализации репозитория можно выбрать формат SHA-256, а в качестве запасного определить хэш SHA-1:
       git init --object-format=sha256 /path/to/repo
       cd /path/to/repo
       git config extensions.compatObjectFormat sha1
    
  • В команду «git rev-list» добавлена возможность отображения идентификаторов объектов, отсутствующих в локальном репозитории, даже если они недостижимы в ветке или теге, что можно использовать для диагностики повреждения репозитория:
      git rev-list --missing=print --all | grep '^?'
      
      ?70678e7afeacdcba1242793c3d3d28916a2fd152
    
  • Добавлена новая команда «git reflog list» для показа известных reflog-ов и соответствующих им ссылок на теги и ветки.

  • Предоставлена возможность определения альтернативных префиксов для вывода «git diff», отображаемых перед файловым путём и обозначающих состояние до и после определённой версии файла (по умолчанию используются префиксы «a/» и «b/»). Для задания собственных префиксов в конфигурацию добавлены новые параметры diff.srcPrefix и diff.dstPrefix.

  • Добавлен параметр core.commentString для определения строки-разделителя, которая будет использоваться вместо символа »#» для игнорирования комментариев в сообщении для коммита. Ранее доступная настройка core.commentChar адаптирована для поддержки многобайтовых символов в качестве разделителя комментария (ранее поддерживались только ASCII-символы).

  • В команду «git config» добавлена опция »--comment», позволяющая сохранять комментрии в файле .gitconfig для пояснения сути тех или иных настроек.
       git config --comment 'to show the merge base' merge.conflictStyle  diff3
       tail -n 2 .git/config
       [merge]
       conflictStyle = diff3 # to show the merge base
    
  • В команду «git cherry-pick» добавлена опция »--empty» для автоматического удаления избыточных коммитов, по аналогии с опцией »--empty» в git-rebase и git-am.

  • В команде «git checkout -p» разрешено использовать символ »@» в качестве синонима имени «HEAD».



Источник: http://www.opennet.ru/opennews/art.shtml? num=61095

OpenNet прочитано 4290 раз