Представлен релиз распределенной системы управления исходными текстами Git 2.3.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.
По сравнению с прошлым выпуском в новую версию принято 255 изменений, подготовленных при участии 61 разработчика, из которых 19 впервые приняли своё участие в разработке. В новом выпуске представлены в основном исправления ошибок и мелкие улучшения, значительные изменения отсутствуют. Основные изменения:
- Внесены исправления, позволяющие собрать git на платформах без поддержки tv_nsec, clock_gettime, CLOCK_MONOTONIC и HMAC_CTX_cleanup, например, в старых выпусках RHEL;
- Для упрощения передачи дополнительных аргументов в ssh добавлена переменная окружения GIT_SSH_COMMAND. Например, для использования иных параметров идентификации для пределённых git-репозиториев можно выполнить "GIT_SSH_COMMAND='ssh -i git_id' git clone host:repo.git";
- Для развёртывания обновлённой версии проекта некоторые web-разработчики используют "git pull" на сервере для получения рабочей копии. В Git 2.3 появилась возможность инициирования подобного развёртывания командой "git push" для прямой передачи изменений в репозиторий на сервере. Метод работает только при выполнении "git push" на рабочем дереве, не содержащем локальных изменений, например, может использоваться для развёртывания статических и не меняющихся файлов. При использовании метода на web-сервере следует учитывать необходимость ограничения доступа к директории .git и последовательный характер обновления данных (файлы меняются не единовременно). Для включения опции следует для репозитория выполнить команду "git config receive.denyCurrentBranch updateInstead";
- Незаполненное примечание при выполнении команды "git notes" теперь приводит к удалению примечания из объекта. Для добавления пустого примечания следует использовать опцию "--allow-empty";
- В "git clone --reference=путь к локальному клону" добавлена опция "--dissociate" для получения объектов клонирования из эталонного локального хранилища, что позволяет уменьшить число передаваемых по сети данных за счёт копирования из внешнего репозитория только изменённых и новых объектов (вместо копирования объектов из внешнего репозитория можно использовать данные из ранее сделанной локальной копии клонируемого репозитория);
- В "git interpret-trailers" добавлена возможность обработки блоков "Conflicts:" в конце текста;
- В "git am" появилась опция "--message-id" для копирования в лог коммита идентификатора сообщения, полученного по электронной почте;
- В "git send-email" добавлена опция "--transfer-encoding" для принудительного указания значения заголовка Content-Transfer-Encoding (например, base64);
- Сообщения, отправленные через "git send-email", теперь идентифицируются при помощи заголовка X-Mailer. Для отмены установки заголовка следует использовать опцию "--no-xmailer";
- В contrib добавлена команда "git new-workdir", которую можно использовать для заполнения пустого или существующего каталога;
- В интерфейс обработчиков учётных данных добавлена возможность досрочного завершения проверки, без вызова других обработчиков в цепочке. Также стало возможно отключить встроенное приглашение ввода пароля посредством установки переменной окружения GIT_TERMINAL_PROMPT=false;
- В "git branch -d" (удалить) и "git branch -m" (переместить) добавлена опция "-f" для принудительного выполнения операции (в дополнение к -D/-M);
- В contrib добавлен фильтр "diff-highlight", позволяющий настроить на свой вкус подсветку вывода;
- В "git imap-send" добавлены опции "-v" (verbose) и "-q" (quiet);
- Стало возможным указание команды "git remote add $name $URL", если $URL определён через "url.$URL.insteadOf";
- Реализация команды "git imap-send" теперь может быть собрана с библиотекой cURL для соединения с IMAP при помощи методов аутентификации, отличных от CRAM-MD5.
|