Релиз распределенной системы управления исходными текстами Git 1.9.0
17 февраля 2014 года
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Wikinews-logo-ru.svg/300px-Wikinews-logo-ru.svg.png)
Доступен релиз распределенной системы управления исходными текстами Git 1.9.0. Скачок в нумерации версии связан с внесением изменений, нарушающих обратную совместимость. Более существенные нарушения совместимости, связанные с изменением поведения команд "git push" и "git add", отложены до выпуска Git 2.0.
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, Xen, Minix.
Изменения в Git 1.9.0, влияющие на обратную совместимость:
- Аргументы "$cmd $args" в команде "git submodule foreach $cmd $args", используемые по аналогии с указанием подобных аргументов в ssh, теперь передаются напрямую без выполнения через командный интерпретатор, что позволяет избежать непредсказуемого результата, если пользователь забудет экранировать данные в блоке $args;
- Прекращена поддержка работающего в режиме только для чтения экспериментального формата несвязанных объектов (loose-object);
- Изменено действие опции "--tags" в команде "git fetch", которая теперь приводит к извлечению не только тегов, но и данных, извлекаемых как при использовании команды без опции "--tags" (ранее при указании "--tags" извлекались только теги);
- Расширен способ интерпретации аргумента $what в команде "git push $there $what", в ситуации когда, через двоеточие явно не определено, какая ссылка в репозитории $there должна быть обновлена;
- Прекращена поддержка серии давно устаревших команд: repo-config, tar-tree, lost-found и peek-remote.
Среди других изменений в Git 1.9.0:
- При использовании HTTP в качестве транспорта добавлена поддержка ответа "100 Continue" при выполнении HTTP GSS-Negotiate для того, чтобы избежать повторной пересылки больших объёмов данных;
- Различные обновления в реализации "git p4", "git svn" и "gitk";
- Разрешено контролируемое извлечение объектов из репозитория, клонированного в режиме shallow (клон без полной истории изменений, созданный с использованием опции "--depth");
- Добавлена возможность переопределения обработчика команды lv через переменную окружения LV, по аналогии с переопределением less через LESS;
- Использования опции "--prune" в команде "git fetch" теперь позволяет при извлечении удалённо отслеживаемой ветки 'frotz' осуществить предварительное удаление ранее извлечённой ветки 'frotz/nitfol' для высвобождения места;
- Добавлена переменная конфигурации "diff.orderfile=file", выступающая аналогом опции "-Ofile" для команды "git diff";
- Поддержка синтаксиса для исключения отдельных путей, например, "git log -- . ':!dir'" приведёт к обработке всего содержимого, кроме директории 'dir';
- В процессе выполнения команды "git difftool" добавлено отображение общего числа файловых путей и сколько из них уже показано;
- Команда "git push origin master", используемая для отправки текущей master-ветки для обновления внешней master-ветки в оригинальном репозитории, расширена возможностью указания идентичного метода маппинга ссылок, позволяющего определить какие из ссылок в оригинальном репозитории были обновлены на основании текущей master-ветки;
- В "gitweb" добавлена возможность работы с иерархиями ссылок, отличных от refs/heads, когда используются дополнительные пространства имён веток, например, refs/changes/ в
Gerrit;
- В команды, подобные "git log", добавлена опция "--exclude=glob" для исключения при выводе истории изменений данных, соответствующих указанной маске, например, "git log --exclude='*/*' --branches".
Начиная с выпуска 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 add путь" в Git 2.0 будет соответствовать выполнению "git add -A путь" в выпусках Git 1.x. Кроме того, c refs/remotes на refs/remotes/origin/ будет изменён префикс по умолчанию для команды "git svn", если префикс не был явно задан при помощи опции "--prefix".
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.