పంపిణీ చేయబడిన మూల నియంత్రణ వ్యవస్థ విడుదల Git 2.25

అందుబాటులో పంపిణీ చేయబడిన మూల నియంత్రణ వ్యవస్థ విడుదల Git 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 repo
    $ 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

ఒక వ్యాఖ్యను జోడించండి