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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.