Git logo

Доступен релиз распределенной системы управления исходными текстами Git 2.1.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро LinuxAndroidLibreofficeSystemdX.Org,WaylandMesaGstreamerWineDebianDragonFly BSDPerlEclipseGNOMEKDEQtRuby on RailsPostgreSQL,VideoLANPHPXenMinix.

Основные изменения:

 
  • Изменение, нарушающее совместимость: значение по умолчанию для переменной окружения LESS изменено с "FRSX" на "FRX". В частности, убран флаг "S", который указывал на необходимость отрезания хвоста невлезающих длинных строк. Отныне длинные строки будут переноситься на следующую строку. Для возврата старого поведения можно запустить 'git config core.pager "less -S"' или только для команды "git blame" - 'git config pager.blame "less -S"';
  • Добавлена команда "git verify-commit" для проверки цифровой подписи GPG в подписанных коммитах по аналогии с использованием "git verify-tag" для подписанных тегов;
  • Добавлена экспериментальная поддержка нового формата индексов, в котором используется два файла - один с базовыми данными, а другой с инкрементальными изменениями относительно базового файла. Использование данного формата может сократить операции ввода/вывода при перезаписи очень больших индексов на системах с небольшой активностью изменений в рабочем дереве;
  • Активирована по умолчанию настройка "core.preloadindex", включающая поддержку предварительной загрузки индекса, что позволяет ускорить работу на системах с многоядерными CPU;
  • При клонировании репозитория с локального диска при помощи команды "git clone" теперь используется копирование с применением жестких ссылок. Для отмены данного поведения следует использовать опцию "--no-local";
  • В команду git commit --date={date}" добавлена поддержка дополнительных форматов задания времени, в том числе "--date=now";
  • Из contrib/ исключено несколько вышедших из употребления директорий;
  • Код для вычисления ширины экрана при выводе строк UTF-8 обновлён для соответствия спецификации Unicode 7.0;
  • Для клиентов, использующих транспорт на основе HTTP, обеспечена более полная трансляция сообщений об ошибках, передаваемых web-сервером;
  • В скрипте автодополнения ввода для bash (из contrib/) улучшена поддержка алиасов, определяющих сложные последовательности команд;
  • Добавлена настройка "core.commentChar", через которую для редактора сообщений коммитов можно задать символ начала комментария, отличный от "#". Для автоматического определения символа комментария можно указать параметр "auto";
  • В команду "git format-patch" добавлена опция "--signature-file=файл" для добавления подписи к письму из указанного файла;
  • В "git grep" добавлена настройка grep.fullname, принудительно включающая использование полного имени файла ("--full-name")
  • В "git imap-send" добавлена возможность обращения к обработчику запроса параметров входа для получения данных аутентификации;
  • В "git log" и похожих командах обеспечена поддержка значения "auto" для автоматического включения опции "--decorate" при выводе на терминал;
  • Запуск "git merge" без аргументов теперь приведёт к выводу ошибки, за исключением явного определения upstream для текущей ветки или активации опции merge.defaultToUpstream;
  • В "git mergetool" добавлена поддержка бэкенда vimdiff3;
  • По умолчанию отключена настройка mergetool.prompt, при которой всегда выводился запрос подтверждения о запуске утилиты tergetool в текущем пути;
  • В "git replace" добавлена субкоманда "--edit" для создания замены через редактирование существующего объекта;
  • В "git replace" добавлена субкоманда "--graft" для перезаписи родителя текущего коммита;
  • В "git send-email" добавлены опции "--to-cover" и "--cc-cover" для получения содержимого заголовков "To": и "Cc:" из указанных далее файлов;
  • При редактировании сообщения для тега через "git tag" обеспечено отображение тега в комментарии;
  • Лимит "core.deltabasecachelimit" увеличен с 16 до 96 MiB;
  • Проведена значительная оптимизация работы команды "git blame" за счёт реорганизации структур по отслеживанию выполнения работы;
  • Оптимизирована работа "git diff при сравнении трёх и более деревьев.