Доступен релиз распределенной системы управления исходными текстами 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 .".
Из изменений в 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 .".