Представлен (https://lkml.org/lkml/2019/2/24/116) выпуск распределенной системы управления исходными текстами Git 2.21.0 (http://git-scm.com/). Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов.По сравнению с прошлым выпуском в новую версию принято 500 изменений, подготовленных при участии 74 разработчиков, из которых 20 впервые приняли участие в разработке. Основные (https://github.blog/2019-02-24-highlights-from-git-2-21/) новшества (https://github.com/git/git/blob/master/Documentation/RelNote...):
- В "git log" и другие команды добавлена опция "--date=human", позволяющая выводить даты в сокращённом читаемом виде, адаптивно выбирая формат в зависимости от давности события. Например, вместо "Mon Feb 25 08:20:14 2019 -0500" для только что совершённых действий будет указано "N минут назад" (как в режиме "--date=relative"), для недавних событий будет показан день и час, а для старых изменений только день, месяц и год:
Дополнительно предусмотрена опция "--date=auto:human", которая применяет новое форматирование только при выводе через терминал, а при перенаправлении вывода в файл или в другую команду использует формат по умолчанию:- В "git fetch-pack" и "git fetch --deepen=..." добавлена поддержка второй версии (https://www.opennet.me/opennews/art.shtml?num=48622) протокола Git. Команды "git fetch" и "git upload-pack" адаптированы для отправки данных через дополнительные каналы доставки при использовании второй версии протокола Git;
- Добавлена опциональная возможность применения алгоритма хэширования SHA-256 вместо скомпрометированного SHA-1 (https://www.opennet.me/opennews/art.shtml?num=46232) при сборке Git в режиме "NewHash (https://github.com/git/git/blob/master/Documentation/technic...)". Код для обхода дерева объектов изменён с учётом того, что имена объектов могут вычисляться не только с использоваинем SHA-1;
- В команде "git cherry-pick (https://git-scm.com/docs/git-cherry-pick)" обеспечена возможность использования опции "-m" (mainline) при указании "git cherry-pick -m1", т.е. позволяет повторно применить коммит при выборе первого родителя этого коммита в качестве mainline-ветки. В остальных случаях как и раньше будет выводиться ошибка;- Команда "git log -G", осуществляющая поиск по регулярному выражению, с целью оптимизации производительности теперь не выполняет поиск в бинарных файлах, если дополнительно явно не указана опция "--text" или не применён textconv;
- Добавлена настройка "http.version", позволяющая определить предпочитаемую версию протокола HTTP, применяемую при извлечении или отправке изменений. Для работы опции требуется относительно свежая библиотека cURL;- "git push $there $src:$dst" выдаёт ошибку, если в $dst указан относительный путь и точно не ясно, что пользователь имел в виду. В новой версии текст ошибки стал более понятным и добавлена подсказка с
попыткой угадать место назначения с учётом типа объекта;- В команде "git checkout [tree-ish] path..." обеспечен вывод числа путей, которые будут извлечены их индекса или tree-ish;
- В команду "git quiltimport" добавлена опция "--keep-non-patch";
- Команды "git worktree remove" и "git worktree move" теперь можно применять при наличии в рабочем дереве неинициализированных субмодулей (ранее данные операции невозможно было использовать при наличии любого субмодуля);
- Обновлены реализации команд "git multimail" и "git p4";- При указании опции "--format=" для веток, тегов и при переборе ссылок расширен спектр свойств объектов, извлекаемых через API object_info;
- В команде "git rebase -i" обеспечен повторный запуск команды, указанной при помощи настройки 'exec', в случае если прошлая попытка не увенчалась успехом;
- Обновлена реализация команды "git diff --color-moved-ws";
- В "log --format" добавлена поддержка флага "%S" для отображения подсказки об источнике поступления коммита;- В скрипт "git instaweb (https://git-scm.com/docs/git-instaweb)", используемый для запуска интерфейса gitweb для доступа через Web к локальному репозиторию, кроме работы под управлением внешнего http-сервера, добавлена поддержка применения предоставляемых в Python модулей для встраивания функциональности http-сервера (http.server=python);
- Проведена оптимизация и чистка кода, связанного с проверкой несвязанных объектов. Обновлена реализация кэша для ускорения поиска несвязанных объектов;
- Запрещено использование в коде функции "strncat()";
- Реализация "git rebase --merge" переписана для использования общего кода, применяемого в "git rebase -i";
- Код "git bisect" переписан на языке Си.
URL: https://lkml.org/lkml/2019/2/24/116
Новость: https://www.opennet.me/opennews/art.shtml?num=50202
> Код "git bisect" переписан на языке Си.А раньше был на C++ ?
Скорее, на Python.
перл
Some part of it is written in shell script. I intend to convert it to portable C code thus making them builtins.https://summerofcode.withgoogle.com/archive/2016/projects/55.../
> для только что совершённых действий будет указано "N минут назад"В чатах такое часто стали делать, как же раздражает эта глупость, хочешь посмотреть когда сделана запись в логе, а тебе пишет "N минут назад" и сидишь вычитаешь от текущего времени, ппц.
Думаю, что испльзование для публикаций времени в формате "5 дней незад" стало одним из гвоздей в крышку гроба Google+. Как же это бесило.
В Gitlab такое говнище раздражает. Правда можно посмотреть в тултипе.Но они так и не запилили нормально учет локального часового пояса.
Дружная команды рубистов из Днепропетровска.
На гитхабе тоже раздражает, приходится юзерскриптом возвращать стандартные таймстампы. Алло, я не долбаный калькулятор, я не расчётами заниматься пришёл.
Я не понимаю этого тупизма... Почему нельзя было просто ДОБАВИТЬ к полной дате в скобочках "(5 мин)"? (время жизни публикации)
> для только что совершённых действий будет указано "N минут назад"Это не human, а inhuman.
>Добавлена опциональная возможность применения алгоритма хэширования SHA-256 вместо скомпрометированного SHA-1Теперь индекс будет весить в 2 раза больше? SHA-3 не осилили?
Написано "sha-256 hash has been added", но думаю это опечатка, так как изначально они планировали добавить SHA3-256.
Не, всё же SHA-256: https://github.com/git/git/commit/0ed8d8da374f648764758f1303...
Как-то даже неловко на гит гита заходить
> неловко на гит гитаИ правильно. Потому что это _веб_ репы гита.
Твоя "шутка" прокатила бы на https://git-scm.com/download/ ...
..., если б тебе чуть больше повезло.[I]Git via Git
If you already have Git installed, you can get the latest development version via Git itself:
git clone https://github.com/git/git
>>Добавлена опциональная возможность применения алгоритма хэширования SHA-256 вместо скомпрометированного SHA-1
> Теперь индекс будет весить в 2 раза больше? SHA-3 не осилили?Если захочешь и переключишь реп. Или владельцы репо, который ты качаешь, переключат. Или...
В общем "можете не приходить, вычёркиваю".
Пока, то есть.
Пусть присылают больше атакуязвимостей."" Objective
---------
Migrate Git from SHA-1 to a stronger hash function.Background
----------
[...]Git v2.13.0 and later subsequently moved to a hardened SHA-1
implementation by default, which isn't vulnerable to the SHAttered attack.Git v2.13.0 and later subsequently moved to a hardened SHA-1 implementation by default that mitigates the SHAttered attack, but SHA-1 is still believed to be weak.
[...]
Thus Git has in effect already migrated to a new hash that isn't SHA-1 and doesn't share its vulnerabilities, its new hash function just happens to produce exactly the same output for all known inputs, ""
--https://github.com/git/git/blob/master/Documentation/technic...
"" Is Hardened SHA-1 vulnerable?No, SHA-1 hardened with counter-cryptanalysis (see ‘how do I detect the attack’) will detect cryptanalytic collision attacks. In that case it adjusts the SHA-1 computation to result in a safe hash. This means that it will compute the regular SHA-1 hash for files without a collision attack, but produce a special hash for files with a collision attack, where both files will have a different unpredictable hash. ""
--https://shattered.io/
>>Добавлена опциональная возможность применения алгоритма хэширования SHA-256 вместо скомпрометированного SHA-1
> Теперь индекс будет весить в 2 раза больше? SHA-3 не осилили?Как SHA3 помог бы?
Размер хеша 224, 256, 384, 512
> адаптивно выбирая формат в зависимости от давности события"После вчерашнего". "Хрен знает когда". Неужели прогресс дошел...
"Намедни", "надысь", "давеча" и прочие адаптивные формы великого и могучего! :)))
Будет точнее писать, что новая hash функция - это SHA3-256, а не SHA-256.// b.
Там именно SHA-256, а не не SHA3-256https://github.com/git/git/commit/0ed8d8da374f648764758f1303...
Там именно SHA3-256, а вы смотрите на старый commit.
> Там именно SHA3-256, а вы смотрите на старый commit.Это вы не там смотрите, в текущем коде оставлен только SHA-256.
https://github.com/git/git/tree/master/sha256
https://github.com/git/git/commits/master/Documentation/tech...
https://github.com/git/git/commit/4b4e2918099600c1eefe7b5a71...
https://github.com/git/git/commit/13eeedb5d17ca3539600b6618d...
Когда уже исчезнут всякие свн и меркуриалы?Хочу чтоб везде был гит и тогда не будет проблем с взаимодействием.
Меркуриал тебе чем не угодил?
> Когда уже исчезнут всякие свн и меркуриалы?Хочу чтоб везде был гит и
> тогда не будет проблем с взаимодействием.Ты того-этого, мон шер, новость-то почитай: разарботчики поняли, что тебе нДравятся проблемы взимодействия с гит и встроили проблемы взаимодействия в твой гит, чтобы ты мог [проблемить?] сразу, когда .... вот это самое вот ..... в гит.
Ну, то есть, да!, "всякие" уже скоро не нужны будут -- для "проблем взаимодействия".
Да-а?!
One Ring to rule them all,
One Ring to find them,
One Ring to bring them all
And in the Darkness bind them.P.S. Хотелось, конечно, сперва написать что-то про рейх, народ и фюрера.
Един бог, един царь, един календарь.
свн божественен для хранения больших двоичных файлов
ой... то есть у гита и с ЭТИМ проблемы? 8-Oну хотя да, чо я, как маленький...
Я бы тоже не против, но тогда microsoft встроят в гит visual студию и всё начнётся заново
> Когда уже исчезнут всякие свн и меркуриалы?Хочу чтоб везде был гит и тогда не будет проблем с взаимодействием.Ну зачем-же публично желать зла незнакомым людям?
Почему же они не выбрали только SHA3-256?
> Почему
>не
>толькоhttps://github.com/git/git/blob/master/Documentation/technic...
Чтоб немое кино не кончилось _до_ того, как звуковое началось.
А если без алегорий?
Зойчем strncat запретили?
> Зойчем strncat запретили?Готовятся к инте ^W поглощению Sysytem-D. <///>
Не понимаю, откуда столько ненавистников относительного формата времени? Во-первых, никто не отнимает возможность вывода по-старому, а во-вторых, разве мы не смотрим на время события для того, чтобы *понять* сколько времени прошло с момента события? Или у всех калькуляторы времени в головах?
А никто не хочет думать, что 14:30 в Австралии, Англии и Западном побережье США - это могут быть уже 14.30 двух разных дней (в смысле, две разные даты) - подавай точное время на клиенте 8) А какое оно будет точное? Сколько было у пользователя на часах в Австралии или у текущего клиента на часах? А если сервера в разных часовых поясах, вообще? Всем подавай 8:24, а по какому часовому поясу - не особо колышет, лишь бы 24.
Это ничего, что там ещё зона написана? (это если не пользоваться --date=, а если пользоваться, то принимать во внимание установленную зону).
> Не понимаю, откуда столько ненавистников относительного формата времени?Может быть потому, что это было названо human или "в сокращённом читаемом виде". Назвали бы "относительным форматом времени", никто бы и не заметил.
> Не понимаю, откуда столько ненавистников относительного формата времени?И ещё, вдогонку. Для меня human - это не тот самый относительный формат. И не тот формат, который используется, типа "Sat Feb 2 19:44:39 2019" - это просто какая-то каша. Зачем мне день недели? Почему дата идёт после месяца? Почему год идёт после времени? Человекочитаемый формат это "02.02.2019 19:44:39", ну или, на худой конец, "2019-02-02 19:44:39", тогда порядок цифр удобный и визуально можно быстро отсортировать даты.
Это ты ещё про мили, галоны и футы не слышал. Понимаешь у них там даже руль с другой стороны. Дикие люди к ним ещё не пришла цивилизация.
А тест Тьюринга ты уже проходишь?
> Команды "git worktree remove" и "git worktree move" теперь можно применять при наличии в рабочем дереве неинициализированных субмодулейОфигеть, прогресс. Если у меня есть worktree мне по прежнему надо трахаться чтобы его тупо удалить.
Добро пожаловать в git - "популярная" (ха-ха!) DVCS! :))))
все правильно, популярными становятся самые уродливые форматы.
vhs не даст соврать.
Интересно, а есть ли файловая система подобная git? Или это сомнительное действо для уровня фаловой системы? Что хочу:
Чтобы отслеживались файлы на разделе файловой системы по методу COW, т.е., если например перезаписывается файл, удаляется, то он заносился в историю и сохранялась его копия для последующего, возможного восстановления. Git при дополнении в его репозиторий копирует файлы для отслеживания, что явно избыточно на 100%.
ну ты же можешь в некоторых только папках развернуть репозитории
> Или это сомнительное действо для уровня фаловой системы?Да. Тем не менее ИИ наделали и такие решения, см. в поисковике как прикрутить { git, svn, ... } к fuse.
в операционной системе OpenVMS сохраняется вся история изменения файла.
в виде копии.
угу, пока диск не лопнет. afair, никакого cow там в помине нет, это именно полные копии, на каждый чих.
Копий метаинформации при этом не полагается.
Seafile сохранит всю историю ваших файлов на удаленное хранилище. Но это не фс, это сервис типа облака, хранения истории изменений, одна из его функций. Требования сервера по железу минимальные, raspberry Pi достаточно.
> В "git log" и другие команды добавлена опция "--date=human", позволяющая выводить даты в сокращённом читаемом виде...Выглядит крайне ужасно: едет форматирование и постоянно нужно думать что это за идиотский формат в каждой строчке.
> Выглядит крайне ужасно: едет форматированиеАллилуия! Потому что не для роботов, как обычно, а для людей сделано.
> что это за идиотский формат в каждой строчке.
Тебе папа с мамой говорили "учи английский"?
Microsoft пришла порядок навела!