URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 114357
[ Назад ]

Исходное сообщение
"Представлена вторая версия протокола Git"

Отправлено opennews , 18-Май-18 21:53 
Разработчики из компании Google представили (https://opensource.googleblog.com/2018/05/introducing-git-pr...) вторую версию коммуникационного протокола Git (https://mirrors.edge.kernel.org/pub/software/scm/git/docs/te...), который используется для обмена данными при удалённом подключении клиента к Git-серверу. При подготовке второй версии основное внимание было уделено повышению эффективности обмена данными, оптимизации для работы поверх HTTP и решению проблемы с расширяемостью. Реализация нового протокола уже принята в основной состав Git и ожидается в версии Git 2.18.


Среди ключевых новшеств отмечается обеспечение возможности фильтрации ссылок (веток и тегов) на стороне сервера, что позволяет отсеивать ссылки на удалённой стороне без необходимости загрузки списка всех ссылок. В первой версии протокола полный список ссылок в репозитории всегда отправлялся клиенту при выполнении любой команды извлечения, даже когда клиент обновлял только одну ветку ("git fetch origin master").


Для репозиториев, содержащих сотни тысяч ссылок (например, в репозитории Chromium насчитывается более 500 тысяч веток и тегов), сервер вынужден был передавать десятки мегабайт лишних данных, которые просто игнорировались на стороне клиента. Все эти заведомо игнорируемые данные приводили к напрасной трате времени и пропускной способности, особенно когда клиент обновлял в большом репозитории ветку с несколькими коммитами или просто проверял актуальность своей копии репозитория. Внедрение второй версии протокола в Google позволило до трёх раз ускорить выполнения холостых запросов (при отсутствии изменений) в репозитории Chromium и до восьми раз сократить объём отправляемого трафика с серверов googlesource.com.

Вторым важным улучшением стало предоставление средств для расширения протокола, дающих возможность добавлять в протокол новые возможности по мере  расширения функциональности инструментария. Например, расширения позволили добавить поддержку извлечения и отправки (fetch/push) символических ссылок (symref). Новая версия протокола также переработана для упрощения обработки соединений на клиентской стороне при применении в качестве транспорта HTTP (удалённый обработчик теперь функционирует как прокси).

При реализации второй версии протокола пришлось искать обходные пути для решения проблемы с отсутствием механизма согласования версии протокола между клиентом и сервером. Для транспорта "https://" выход был найден в форме добавления при запросе нового HTTP-заголовка "Git-Protocol: version=2", указывающего на поддержку второй версии протокола. Для транспорта "ssh://" передача версии протокла реализована через установки переменной окружения "GIT_PROTOCOL=version=2" на удалённой стороне после соединения (требует разрешения установки своих переменных окружения в конфигурации SSH).


Для транспорта "git://"  с добавлением параметра с номером версии пришлось повозится, так как число параметров было ограничено после исправления в 2009 году ошибки,  приводящей к зацикливанию. Проблема была решена "хаком", позволившим обойти ограничения через использование двух нулевых символов подряд, т.е. параметры передаются в виде "003egit-upload-pack /project.git\0host=myserver.com\0\0version=2\0".

URL: https://opensource.googleblog.com/2018/05/introducing-git-pr...
Новость: https://www.opennet.dev/opennews/art.shtml?num=48622


Содержание

Сообщения в этом обсуждении
"Представлена вторая версия протокола Git"
Отправлено Аноним , 18-Май-18 21:56 
> При реализации второй версии протокола пришлось искать обходные пути для решения проблемы с отсутствием механизма согласования версии протокола между клиентом и сервером

Говорили же им.

> When you design protocols or file formats, make them sufficiently self-describing to be extensible. Always, always either include a version number

http://www.faqs.org/docs/artu/ch01s06.html


"Представлена вторая версия протокола Git"
Отправлено Аноним , 18-Май-18 21:57 
Можно было ведь добавить git2:// и не делать хак.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 18-Май-18 22:07 
Расскажи об этом w3c. А то они бедные никак не догадаются добавить версию после протокола http.

"Представлена вторая версия протокола Git"
Отправлено пох , 19-Май-18 10:34 
> Расскажи об этом w3c. А то они бедные никак не догадаются добавить версию после протокола http.

а им как раз и не надо - они-то (были) умные, и с 95го года добавили версию непосредственно в протокол.
А еще до 94го старательно определили что должен делать протокол с незнакомыми заголовками, поэтому добавление версии еще и обратную совместимость им не сломало.

гитовские гугло-обезьянки умом не обладают, только жрать протянутый банан могут.


"Представлена вторая версия протокола Git"
Отправлено Анонимный психотерапевт , 19-Май-18 22:33 
>> гитовские гугло-обезьянки умом не обладают

Как ты в дверные проемы пролазишь с таким самомнением?
Тяжко же жить, когда вокруг все раздражает. Береги себя, бро.


"Представлена вторая версия протокола Git"
Отправлено Попугай Кеша , 26-Июл-18 14:47 
Чувак, я на твоей стороне ;)

"Представлена вторая версия протокола Git"
Отправлено Нанобот , 19-Май-18 08:50 
Это замена одного хака на другой. И, вместо того, чтобы разруливать ситуацию автоматически, ты предлагаешь перенести ответственность на людей (считаю такой перенос ответственности признаком криворукости разработчика)

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 10:03 
так если механизм не заложен - так и есть

"Представлена вторая версия протокола Git"
Отправлено нурок , 19-Май-18 20:59 
так всё и будет автоматически, обновляешь свой гит на компе и всё он уже шлёт запросы к серваку по второму протоколу с фолбэком на первый. а с SSH конфигом к счастью автоматически ничего не происходит, только руками.

"Представлена вторая версия протокола Git"
Отправлено анонимус , 18-Май-18 22:09 
> например, в репозитории Chromium насчитывается более 500 тысяч веток и тегов

На гитхабе в репе chromium написано 6 branches, где там 500 000 веток? Это безумное количество, никто бы не допустил такого числа веток. Или там 494 000 тегов и 6 веток? :)


"Представлена вторая версия протокола Git"
Отправлено apollo2k4 , 18-Май-18 22:15 
Chromium как бы не на GitHub хостится, там только зеркало…

"Представлена вторая версия протокола Git"
Отправлено Андрей , 18-Май-18 23:17 
кривое зеркало, значит.

"Представлена вторая версия протокола Git"
Отправлено Попугай Кеша , 26-Июл-18 14:47 
Черное зеркало...

"Представлена вторая версия протокола Git"
Отправлено Andrey Mitrofanov , 19-Май-18 07:28 
>> например, в репозитории Chromium насчитывается более 500 тысяч веток и тегов
> На гитхабе в репе chromium написано 6 branches, где там 500 000
> веток? Это безумное количество, никто бы не допустил такого числа веток.
> Или там 494 000 тегов и 6 веток? :)

На https://chromium.googlesource.com/chromium/src/+refs "всего" 14тыс. тэгов.

Может, укушенные CVS-ом и https://chromium.googlesource.com/All-Projects/ фрибсдешниками и их реп-всё-в-куче?


"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 17:09 
Разве у слитых веток ссылки не остаются? А уж делить-объединять ветки в git'е это сам Линус завещал.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 18-Май-18 22:22 
>Для репозиториев, содержащих сотни тысяч ссылок (например, в репозитории Chromium насчитывается более 500 тысяч веток и тегов),

Ваще замечательно, сначала они неправильно используют гит а потом делают новую версию протокола чтобы это было не так больно.


"Представлена вторая версия протокола Git"
Отправлено anonymous , 19-Май-18 04:58 
потрясающе, вы вот гит не разрабатываете, а делаете такие громкие заявляния

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 13:18 
Поздравляю вы никогда не видели ребу хромиума на мнение о божественном гите имеете

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 15:04 
Действительно: в каком вменяемом случае может понадобиться иметь репозиторий с тысячами веток? Мне кажется, разработчики Chromium перепутали Git с SVN: Git — это средство распределённой разработки, при использовании которого отдельные ветки пилятся независимо и в своих репозиториях, а в основной репозиторий пушатся только более-менее готовые изменения, оттестированные отдельно и представляющие ценность для хранения там. Именно так разрабатывается Linux и, не смотря на куда больший объём кода и число разработчиков, Git с хранением основного репозитория отлично справляется.

Это как мелкософт, индусы из которого сначала решили залить в один репозиторий все составляющие windows проекты, а когда получили тормоящий репозиторий объёмом в сотни гигабайт, стали пилить под это специальную файловую систему.


"Представлена вторая версия протокола Git"
Отправлено Аноним , 20-Май-18 00:59 
В свн столько веток тоже не держа. Но там дело не столько в ветках сколько в тегах. С свн они его как раз не перепутали, они просто эмулируют логику свн поверх гита.

"Представлена вторая версия протокола Git"
Отправлено Andrey Mitrofanov , 20-Май-18 08:34 
> не перепутали, они просто эмулируют логику

файлопомойки поверх

>свн поверх гита.

Они просто не любят Микрософт, не хотят покупать ms-сервер, не хотят использовать msgvfs, но ... хотят, чтоб былО, как в микрософте.


"Представлена вторая версия протокола Git"
Отправлено Crazy Alex , 18-Май-18 23:02 
Эх, ещё б они какую-нибудь механику докачки прикрутили...

"Представлена вторая версия протокола Git"
Отправлено Андрей , 18-Май-18 23:19 
Подождите, а что не прикрутили?! А я именно об этом гигантском улучшении подумал в первую очередь.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 00:37 
На диалапе сидишь?

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 06:34 
Ты мазохист что ли, работать с большими репами на диалапе?

Но даже если у тебя ничего другого нет, то есть опции, радикально ограничивающие количество качаемого: --depth и --single-branch

Завязывай с своим неосиляторским нытьём.


"Представлена вторая версия протокола Git"
Отправлено Crazy Alex , 19-Май-18 15:01 
Как разок понадобится таки вытащить большую репу, сидя с отпуске с не сильно хорошей мобильной связью - по-другому запоёте.

И алючиаи эти не помогут (а ветки ещё выгрести для начала надо).


"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 16:25 
Зачем Вы так жестоко ломаете картину мира диванному админу?

"Представлена вторая версия протокола Git"
Отправлено Андрей , 19-Май-18 18:21 
Кстати, хороший пример: inkscape. Кроме недостатка самого протокола, у них в репе ещё куча мусора. Склонировал 1,5 ГБ!!! Запустил git gc --aggressive - и оказалось, что на самом деле в репе всего-то 440 МБ.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 18-Май-18 23:10 
Ведро линукс по прежнему нельзя скачать на плохом канале? Хорошо зделоли.

"Представлена вторая версия протокола Git"
Отправлено Anonimous , 19-Май-18 05:00 
А чего,
$ git clone --depth 1 --branch linux-4.16.y  \
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

не работает?


"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 06:35 
Да ему лишь бы сирануть, а решение проблемы до лампочки.

"Представлена вторая версия протокола Git"
Отправлено Нанобот , 19-Май-18 08:52 
> А чего,
> $ git clone --depth 1 --branch linux-4.16.y  \
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
> не работает?

Может человеку нужны все ветки, одна уже не вставляет


"Представлена вторая версия протокола Git"
Отправлено Андрей , 19-Май-18 12:35 
> git clone --depth 1

Недавно была новость: 6 млн. git объектов! Тут, казалось, бы всего 1 последний коммит загружается. А придётся загрузить достаточно много: всего в 10 раз меньше чем полный клон со всеми миллионами объектов!

> --branch linux-4.16.y

Причём тут это? Никакого влияния на размер загружаемого не влияет. Просто сокращение: чекаутнуть вот эту ветку после клонирования.


"Представлена вторая версия протокола Git"
Отправлено name , 19-Май-18 14:16 
Почему же, отлично работает. Только это 180 мегабайт. И на дерьмовом канале это может затянуться очень надолго. Может поведаете, что должно помешать разрабатывать ведро линукс на том же диалапе, кроме дерьмового протокола гита?

"Представлена вторая версия протокола Git"
Отправлено KonstantinB , 20-Май-18 16:00 
> Может поведаете, что должно помешать разрабатывать ведро линукс на том же диалапе

Анониму с опеннета помешает то, что он и не собирался ничего разрабатывать.

Тот же, кто способен это делать, в состоянии нагуглить про git-bundle за 30 секунд даже с диалапа.


"Представлена вторая версия протокола Git"
Отправлено Старый одмин , 19-Май-18 20:01 
Используй дары смерти от Майкрософт
https://github.com/Microsoft/GVFS

"Представлена вторая версия протокола Git"
Отправлено Andrey Mitrofanov , 20-Май-18 08:36 
> Используй дары смерти от Майкрософт
>\/Microsoft/GVFS

Микрософт?... Микрософт и докачка? И работающаяя докачка??  Не шути так, мне больно!111 </<<<


"Представлена вторая версия протокола Git"
Отправлено Сергей , 20-Май-18 11:00 
https://www.kernel.org/cloning-linux-from-a-bundle.html

"Представлена вторая версия протокола Git"
Отправлено Андрей , 21-Май-18 04:32 
А inkscape? gcc? gimp? llvm? ...

"Представлена вторая версия протокола Git"
Отправлено Андрей , 18-Май-18 23:17 
Наконец-то!!!

"Представлена вторая версия протокола Git"
Отправлено Дуплик , 19-Май-18 06:12 
Когда новые хеши будут? SHA1 уже на помойке истории. Небезопасная туфта.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 06:36 
- Хочу домой.
- Ну так пошли.
- Хочу домой быстро!
- Ну тогда побежали...

(с) известный анекдот про мужика, нашедшего в пустыне лампу с джинном


"Представлена вторая версия протокола Git"
Отправлено аноним 12 , 19-Май-18 09:26 
И от какой же опасности ты собираешься тут защищаться новыми хешами?

"Представлена вторая версия протокола Git"
Отправлено KonstantinB , 19-Май-18 09:49 
Давай ты сначала продемонстрируешь подмену коммита на другой, и не тупо с рандомным мусором, а с компилирующимся вредоносным кодом, так чтобы sha1 был тот же. А потом поговорим о безопасности.

"Представлена вторая версия протокола Git"
Отправлено anomymous , 19-Май-18 10:55 
Давай ты сначала продемонстрируешь... MD2...
Давай ты сначала продемонстрируешь... MD4...
Давай ты сначала продемонстрируешь... MD5...
<==== вы находитесь здесь
Давай ты сначала продемонстрируешь... SHA1...
Давай ты сначала продемонстрируешь... SHA256...
Давай ты сначала продемонстрируешь... SHA384...
Давай ты сначала продемонстрируешь... SHA512...
...

"Представлена вторая версия протокола Git"
Отправлено Аноним , 21-Май-18 00:08 
Даже для md5 такое нелегко продемонстрировать, если ты не Гугл. Сложность md5 preimage attack - 2^122.

"Представлена вторая версия протокола Git"
Отправлено Аноним , 21-Май-18 07:08 
> Давай ты сначала продемонстрируешь... MD2...
> Давай ты сначала продемонстрируешь... MD4...
> Давай ты сначала продемонстрируешь... MD5...

Так где эксплойты то? Так и не было? Впрочем, ничего нового.


"Представлена вторая версия протокола Git"
Отправлено Аноним , 19-Май-18 16:31 
> обеспечение возможности фильтрации ссылок (веток и тегов) на стороне сервера

Наступило щястье!


"Представлена вторая версия протокола Git"
Отправлено Николай Величко , 20-Май-18 13:56 
> Разработчики из компании Google представили

Какого xpeна? Кто они такие чтобы представлять? Git - это разработка Линуса Торвальдса, а не Google. Что это еще за фокусы? Какие новые протоколы? Они там упоролись? Или это их внутренний форк для своих нужд? Если они это не толкают в массы, то пусть месят свой форк и не лезут к остальным. Линус сам знает как лучше развивать Git.


"Представлена вторая версия протокола Git"
Отправлено Andrey Mitrofanov , 20-Май-18 14:23 
>> Разработчики из компании Google представили
> Какого xpeна? Кто они такие чтобы представлять? Git - это разработка Линуса
> Торвальдса, а не Google. Что это еще за фокусы? Какие новые

ЛТ уже довольно давно не у руля https://lwn.net/Articles/145123/ .

> свой форк и не лезут к остальным. Линус сам знает как
> лучше развивать Git.

Виновые кеши приняли, и гуглёвые протоколы схавают.


"Представлена вторая версия протокола Git"
Отправлено Crazy Alex , 20-Май-18 20:02 
Это открытый софт. Кому что надо - тот и разрабатывает.

"Представлена вторая версия протокола Git"
Отправлено Влад , 24-Май-18 03:08 
> требует разрешения установки своих переменных окружения в конфигурации SSH

вангую, что скоро вскроется уязвимость