Git 2.37 સ્ત્રોત નિયંત્રણ પ્રકાશન

વિતરિત સ્ત્રોત નિયંત્રણ સિસ્ટમ Git 2.37 ના પ્રકાશનની જાહેરાત કરવામાં આવી છે. ગિટ એ સૌથી લોકપ્રિય, વિશ્વસનીય અને ઉચ્ચ-પ્રદર્શન સંસ્કરણ નિયંત્રણ સિસ્ટમોમાંની એક છે, જે શાખા અને મર્જિંગ પર આધારિત લવચીક બિન-રેખીય વિકાસ સાધનો પ્રદાન કરે છે. ઇતિહાસની અખંડિતતા અને પૂર્વવર્તી ફેરફારો સામે પ્રતિકાર સુનિશ્ચિત કરવા માટે, દરેક કમિટમાં સમગ્ર પાછલા ઇતિહાસની ગર્ભિત હેશિંગનો ઉપયોગ કરવામાં આવે છે; વિકાસકર્તાઓના ડિજિટલ હસ્તાક્ષરો સાથે વ્યક્તિગત ટૅગ્સ અને કમિટ્સને પ્રમાણિત કરવાનું પણ શક્ય છે.

અગાઉના પ્રકાશનની તુલનામાં, નવા સંસ્કરણમાં 395 ફેરફારો અપનાવવામાં આવ્યા હતા, જે 75 વિકાસકર્તાઓની ભાગીદારી સાથે તૈયાર કરવામાં આવ્યા હતા, જેમાંથી 20 એ પ્રથમ વખત વિકાસમાં ભાગ લીધો હતો. મુખ્ય નવીનતાઓ:

  • Доведён до готовности к повсеместному использованию механизм частичных индексов (sparse index), охватывающих лишь часть репозитория. Частичные индексы позволяют повысить производительность и сэкономить место в репозиториях, в которых выполняются операции частичного клонирования (sparse-checkout) или осуществляется работа с неполной копией репозитория. В новом выпуске завершена работа по интеграции частичных индексов в команды «git show», «git sparse-checkout» и «git stash». Наиболее заметный выигрыш в производительности от использования частичных индексов наблюдается в команде «git stash», скорость выполнения которой в некоторых ситуациях возросла на 80%.
  • Реализован новый механизм «cruft packs» для упаковки недостижимых объектов (unreachable), на которые в репозитории отсутствуют ссылки (не ссылаются ветки или теги). Недостижимые объекты удаляются сборщиком мусора, но до удаления определённое время остаются в репозитории для исключения состояний гонки. Для отслеживания периода нахождения недостижимых объектов необходима привязка к ним меток с временем изменения подобных объектов, что не позволяет хранить их в одном pack-файле, в котором все объекты имеют общее время изменения. Ранее применяемое сохранение каждого объекта в отдельном файле приводило к проблемам при наличии большого числа свежих недостижимых объектов, ещё не подпадающих под удаление. Предложенный механизм «cruft packs» позволяет хранить все недостижимые объекты в одном pack-файле, а данные о времени модификации каждого объекта отражать в отдельной таблице, хранимой в файле с расширением «.mtimes».
  • Для Windows и macOS реализован встроенный механизм отслеживания изменений в файловой системе, позволяющий обойтись без перебора всего рабочего каталога при выполнении таких операций, как «git status». Ранее для отслеживания изменений через hook-и могли подключаться внешние утилиты отслеживания изменений в ФС, такие как Watchman, но это требовало установки дополнительных программ и настройки. Теперь указанная функциональность встроена и может быть включена командой «git config core.fsmonitor true».
  • В команде «git sparse-checkout» объявлена устаревшей поддержка альтернативного режиму «—cone» метода определения шаблонов для частичного клонирования, позволяющего при определении подпадающей под операцию клонирования части репозитория перечислять отдельные файлы с использованием синтаксиса «.gitignore», что не позволяет использовать для оптимизации частичные индексы.
  • Повышена гибкость настройки вызова fsync() для сброса изменений на диск. В параметр «core.fsyncMethod» добавлена поддержка стратегии синхронизации «batch», позволяющей ускорить работу при записи большого числа отдельных файлов за счёт накопления изменений в кэше обратной записи, сбрасываемом одним вызовом fsync(). Проведённый тест, в результате которого в командой «git add» было добавлено 500 файлов, при включении нового режима был выполнен за 0.15 секунд, в то время как при вызове fsync() для каждого файла потребовалось 1.88 секунд, а без использования fsync — 0.06 секунд.
  • В команды обхода веток, подобные «git log» и «git rev-list», добавлена опция » —since-as-filter=X», позволяющая отсеять информацию о коммитах, время создания которых старше «X». В отличие от опции «—since» новая команда реализована в виде фильтра, не останавливающего перебор после первого коммита, старше заданного времени.
  • В команде «git remote» при указании флага «-v» обеспечен вывод информации о частичных клонах репозитория.
  • Добавлена настройка «transfer.credentialsInUrl», которая может принимать значения «warn», «die» и «allow». В случает указания в параметре «remote.<name>.url» учётных данных открытым текстом попытка выполнения операций «fetch» или «push» будет завершена ошибкой, если настройка «transfer.credentialsInUrl» принимает значение «die», или предупреждением, если установлено значение «warn».
  • По умолчанию задействована новая реализация интерактивного режима команды «git add -i», переписанная с Perl на Си.

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો