Релиз распределенной системы управления исходными текстами Git 1.8.2
Доступен релиз распределенной системы управления исходными текстами 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 .».
© OpenNet
