분산 소스 제어 시스템 Git 2.25 출시

사용 가능 분산 소스 제어 시스템 출시 힘내 2.25.0. Git은 가장 인기 있고 안정적인 고성능 버전 제어 시스템 중 하나로 분기 및 병합을 기반으로 하는 유연한 비선형 개발 도구를 제공합니다. 기록의 무결성과 소급 변경에 대한 저항을 보장하기 위해 각 커밋에서 전체 이전 기록의 암시적 해싱이 사용되며, 개발자의 디지털 서명으로 개별 태그와 커밋을 인증하는 것도 가능합니다.

이전 버전에 비해 새 버전에는 583개의 변경 사항이 포함되었으며, 84명의 개발자가 참여하여 준비했으며, 이 중 32명이 처음으로 개발에 참여했습니다. 주요 혁신:

  • Приближается к стабилизации и полной готовности возможность частичного клонирования (partial clones), позволяющая переносить лишь часть данных и работать с неполной копией репозитория. При обычном клонировании из репозитория копируются все данные, включая каждую версию каждого файла из истории изменений. Для очень больших репозиториев копирование данных приводит к значительному увеличению трафика и дискового пространства, даже если разработчика интересует лишь подмножество файлов. Для упрощения получения только части рабочего дерева исходных текстов в новом выпуске предложена экспериментальная команда «sparse-checkout» и новая опция «—sparse» для команды «clone».

    Ранее процесс выборочного клонирования производился через задание 필터 для отсеивания лишнего контента и опции «—no-checkout» для отключения восполнение недостающих файлов. После этого, перед выполнение операции checkout, требовалось включить настройку core.sparseCheckout и определить в файле .git/info/sparse-checkout список шаблонов исключаемых путей. Например, для клонирования без блобов и запрета извлечения файлов из вложенных каталогов глубиной 2 и больше можно было выполнить:

    git clone —filter=blob:none —no-checkout /your/repository/here repo
    $ CD 저장소
    $ cat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Новая команда «git sparse-checkout» существенно упрощает работу и сводит процесс организации работы с неполным репозиторием к командам:

    git clone —filter=blob:none —sparse /your/repository/here repo
    git sparse-checkout set /path/to/check/out

    Команда sparse-checkout позволяет установить список путей для checkout (set) без ручной настройки .git/info/sparse-checkout, а также вывести текущий список путей (list) и включить или отключить частичные checkout (enable/disable).

    Для оптимизации работы с очень большими репозиториями и списками шаблонов предложена настройка «git config core.sparseCheckoutCone«, ограничивающая допустимые шаблоны (вместо произвольных шаблонов .gitignore можно задать все ли пути и все ли файлы в заданном подкаталоге следует извлекать). Например, если в большом репозитории есть каталог «A/B/C» и вся работа сосредоточена в подкаталоге «C», то при включении режима sparseCheckoutCone команда «git sparse-checkout set A/B/C» извлечёт содержимое «C» полностью, но из «A» и «B» извлечёт только необходимые для работы с «C» части.

  • Из документации («git rebase -h») удалены все упоминания опции «—preserve-merges», которая объявлена устаревшей и вместо неё для переноса набора коммитов следует использовать «git rebase —rebase-merges".
  • Для улучшения читаемости сообщений с патчами, отправляемыми в списки рассылки, добавлена опция «git format-patch —cover-from-description subject», при указании которой в качестве темы сопроводительного письма для набора патчей используется первый абзац из текста описания ветки.
  • Реализована поддержка совместного применения команды «git apply —3way» и настройки «merge.conflictStyle» («git apply» теперь учитывает стиль описания конфликта из merge.conflictStyle при необходимости разрешения конфликта после попытки применения файла с патчем к репозиторию).
  • Код определения функций, используемый в таких операциях как «git diff/grep —show-function/—function-context», расширен поддержкой определения границ функций в программах на языке 불로 불사의 영약.
  • В «git add», «git commit», «git reset» и другие команды добавлена новая опция «—pathspec-from-file», дающая возможность загрузить список путей из файла или входного потока, вместо их перечисления в командной строке.
  • Решена проблема с определением переименований на уровне каталогов при записи коммитов. Определение не работало в случае перемещения содержимого подкаталога в корень репозитория.
  • Предложена начальная реализация переработанной команды «git add -i», позволяющей добавлять изменённое содержимое в интерактивном режиме, переписанная с Perl на Си. Ведётся аналогичная переработка команды «git add -p».
  • Проведён рефакторинг команды «git log —graph», формирующей ASCII-изображение графа с историей изменений в репозитории. Переработка позволила значительно улучшить и упростить вывод без искажения структуры истории, что, например, решило проблему с вылезанием рисунка за границу ширины строки терминала.
  • Опция «git log —format=..», позволяющая изменить формат вывода,
    расширена поддержкой флагов «l/L» для вывода только части email-адреса, указываемой перед символом «@» (например, полезно, когда у всех разработчиков все email в одном домене).

  • В команду «git submodule» добавлена подкоманда «set-url».
  • Тестовые наборы обновлены в рамках подготовки к переходу на
    алгоритм хэширования SHA-2 вместо SHA-1.

출처 : opennet.ru

코멘트를 추가