Публикация на системата за управление на изходен код 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, е предложен нов формат на обекти „совместимост“, който позволява да се позовава на обекти не само по основния хеш, зададен при инициализация на хранилището, но и по резервен хеш. Например, при инициализация на хранилището може да се избере формат 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 ‘да покаже базата за сливане’ merge.conflictStyle diff3 tail -n 2 .git/config [merge] conflictStyle = diff3 # да покаже базата за сливане
  • В командата «git cherry-pick» беше добавена опция «—empty» за автоматично премахване на излишните комити, по аналогия с опцията «—empty» в git-rebase и git-am.
  • В командата «git checkout -p» е разрешено използването на символа «@» като синоним на името «HEAD».

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster