Анонсирован (https://lkml.org/lkml/2012/10/21/158) релиз распределенной системы управления исходными текстами Git 1.8.0 (http://git-scm.com/). Git является одной из самых эффективных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются криптографические методы, также возможна привязка цифровых подписей разработчиков к тегам и коммитам. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6...), Android (https://android.googlesource.com/), Libreoffice (http://cgit.freedesktop.org/libreoffice), Systemd (http://cgit.freedesktop.org/systemd), X.Org (http://cgit.freedesktop.org/xorg), Wayland (http://cgit.freedesktop.org/wayland), Mesa (http://cgit.freedesktop.org/mesa/), Gstreamer (http://cgit.freedesktop.org/gstreamer), Wine (http://source.winehq.org/git/wine.git), Debian (http://anonscm.debian.org/gitweb) DragonFly BSD (http://gitweb.dragonflybsd.org/?p=dragonfly.git;a=summary), Perl (http://perl5.git.perl.org/perl.git), Eclipse (http://git.eclipse.org), GNOME (http://git.gnome.org/browse/), KDE (https://projects.kde.org/projects), Qt (http://qt.gitorious.org/), Ruby on Rails (https://github.com/rails/rails), PostgreSQL (http://git.postgresql.org/gitweb/), VideoLAN (http://git.videolan.org), PHP (http://git.php.net/). Переход от серии версий 1.7.x к 1.8.x обусловлен изменением поведения команды "git push". В ситуации когда при выполнении "git push" явно не указано что именно помещать в репозиторий в прошлых выпусках использовалась семантика "matching", при которой для обновления выбирались все внешние ветки и теги с именами, совпадающими с локальными. Начиная со следующего выпуска (1.8.1) поведение будет изменено и по умолчанию будет применяться семантика "simple", при которой изменения отправляются только из текущей ветки в ветку с тем же именем, в случае если локальная ветка назначена для интеграции с удалённой веткой. Переопределить новое поведение можно через конфигурационную переменную "push.default".
Из других изменений в Git 1.8.0 можно отметить:
- Команда "git branch --set-upstream" объявлена устаревшей и может перестать работать в будущих выпусках. В качестве замены представлена команда "git branch [-u|--set-upstream-to]". Ранее были не редки случаи указания "git branch --set-upstream origin/master", что приводило к созданию локальной ветки "origin/master" для интеграции с текущей загруженной веткой, что явно не то что подразумевал пользователь. Окончание "-to" поможет исключить ошибочную трактовку назначения опции;
- В "git svn" обеспечена поддержка работы с SVN 1.7. В "git p4" добавлена опция "--conflicts" для определения действий в случае обнаружения конфликта при выполнении "p4 submit";
- В состав включена собственная реализация библиотеки регулярных выражений для платформ, на которых наблюдаются проблемы с работой библиотеки regexp. Также добавлены обвязки для обеспечения совместимости с нестандартными реализациями mkdir и setitimer();
- В парсер опций "git checkout" добавлена проверка типичных ошибок в порядке задания параметров командной строки. Например, при выполнении "git checkout -b -t foo bar" будет указано, что вместо имени ветки указана опция "-t";
- Внутренние вызовы "git merge-base" заменены на более упрощённые аналоги, выполняющие только проверки наложения коммитов, без более ресурсоёмких проверок слияний веток;
- Для платформ Win32 и GNOME добавлены хелперы для доступа к ключам текущего пользователя;
- Выполнено начальное портирование для операционной системы серверов HP NonStop (http://en.wikipedia.org/wiki/NonStop);
- При выполнении "git am" теперь из строки "RE: subject" вырезается и префикс "RE:", а не только "Re:" и "re:";
- В команду "git cherry-pick" добавлена опция "--allow-empty-message" для повторной отправки коммита без занесения сообщений в лог;
- В команду "git daemon" добавлена опция "--access-hook", разрешающая внешним командам доступ к сервисам проверки по IP или пути к репозиторию.
- В команде "git difftool --dir-diff" реализована поддержка использования символических ссылок для подготовки временной копии рабочего дерева;
- В команду "git grep" по умолчанию добавлена возможность указания нестандартных типов масок;
- В команде "git log -g" появилась опция "--grep-reflog=pattern" для ограничения вывода с использованием фильтра по маске;
- В команду "git merge-base" добавлена опция "--is-ancestor A B", позволяющая проверить является ли А прародителем B;
- В команду "git rebase -i" добавлена опция "--edit-todo" для написания инструкций по дальнейшим изменениям;
- Через переменные конфигурации mergetool.$name.cmd теперь можно переопределить любые команды для "git mergetool", в том числе и встроенные;
- Интегрированы накопившиеся изменения для "git gui".
URL: https://lkml.org/lkml/2012/10/21/158
Новость: http://www.opennet.me/opennews/art.shtml?num=35136