Доступен релиз распределенной системы управления исходными текстами Git 1.8.2. Git является одной из самых эффективных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются криптографические методы, также возможна привязка цифровых подписей разработчиков к тегам и коммитам. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, Libreoffice, Systemd, X.Org, Wayland, Mesa, Gstreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP.
Из изменений в Git 1.8.2 можно отметить:
- Начальная поддержка платформ QNX и z/OS UNIX System Services;
- Добавлена подсветка вывода результатов выполнения тестов, зелёным помечены пройденные без ошибок тесты, красным - тесты при выполнении которых возникли проблемы, желтым - выполнение которых вызывает вопросы, синим - информативные результаты;
- Документация приведена к унифицированному наименованию продукта, для которого рекомендуется использовать имя Git. В контексте выполнения конкретных команд указывается git. Сочетания GIT рекомендуется избегать;
- Дополнительный скрипт (contrib/completion), используемый в системе автодополнения для предложения вариантов часто используемых путей, модифицирован для более точного соответствия предложений к особенностям тех или иных команд (например для "git add" не предлагаются немодифицированные пути);
- При задании шаблона в файлах .gitignore и .gitattributes теперь допустимо использовать маску "**/" для допустимости нулевого уровня вложенности поддиректории. Т.е. "foo/**/bar" сработает при наличии bar в директории foo и если bar находится в поддиректории директории foo;
- Разделитель аргументов и путей в командной строке "--" теперь не обязательно использовать для маски пути ":/", например, вместо "git cmd -- :/" можно указать "git cmd :/".
- В "git blame" и "git diff" добавлена поддержка опции "--no-follow";
- Для помощи в отладке файлов .gitignore добавлена новая команда "git check-ignore";
- Команда "git cherry-pick" теперь может применяться для повтора корневого коммита для несозданной ветки;
- В конфигурацию добавлены переменные commit.cleanup = 'whitespace' и setting diff.algorithm для использования опции --cleanup=whitespace в "git commit" и выбора нестандартного алгоритма для команды "git diff";
- В команду "git format-patch" добавлена опция "-v $count", при указании которой к именам файлов с сохраняемыми патчами добавляется строка "v$count-" и в файлах используется префикс "PATCH v$count", что позволяет сохранять патчи под разными именами;
- В команды подобные "git log" добавлена опция "--use-mailmap" для перезаписи имён и адресов в соответствии с механизмом mailmap;
- При указании "git log --cc --graph" теперь отображается вывод отличий комбинированный с графом предков;
- В "git mergetool" и "git difftool" обеспечен вывод списка доступных бэкендов в более непротиворечивой форме; .
- Для обновления тега через "git push" теперь нужно всегда указывать опцию "-f" (--force);
- Обновлена реализация команды "git fast-export", которую теперь допустимо использовать в контексте интерфейса внешних хелперов;
- В директорию contrib/ добавлен внешний хэлпер для взаимодействия с репозиториями bzr;
- В реализацию "git p4" внесена большая порция исправлений, связанных с обработкой веток. Обеспечена поддержка использования с Python 2.4/2.5 и решены проблемы с совместимостью с окружением Cygwin;
- В "git fsck" добавлена проверка на наличие в дереве объектов, которых там быть не должно (например, ".", ".git" и "..");
- Проведена оптимизация кода сопоставления путей, содержащих маски;
- Переработана и ускорена реализация команды "git reset";
- Обновлена реализация команды "imap-send", в которой задействован уже используемый в команде http-push код квотинга XML;
- Добавлена возможность сборки с опцией USE_WILDMATCH=YesPlease, активирующей задействование альтернативной реализации логики сопоставления шаблонов для ссылок и путей в репозитории. Основное отличие новой реализации в поддержке маски "**/" для многоуровних путей ("refs/**/master" сработает для "refs/heads/master" и "refs/remotes/origin/master").
В анонсе также отмечается, что начиная с выпуска Git 2.0 будет изменено поведение команды "git push" по умолчанию. В ситуации когда при выполнении "git push" явно не указано что именно помещать в репозиторий ранее использовалась семантика "matching", при которой для обновления выбирались все внешние ветки и теги с именами, совпадающими с локальными. В будущем поведение будет изменено и по умолчанию будет применяться семантика "simple", при которой изменения отправляются только из текущей ветки в ветку с тем же именем, в случае если локальная ветка назначена для интеграции с удалённой веткой. Переопределить новое поведение можно через конфигурационную переменную "push.default".
При неуказании добавляемых путей при выполнении "git add -u" и "git add -A", начиная с версии Git 2.0 указанные команды будут применяться для всего репозитория, а не иерархии относительно текущей поддиректории, что соответствует поведению "git commit -a" и других похожих команд. Для распространения действия только начиная с текущей поддиректории следует явно указывать текущий путь, например, "git add -u .".