The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Facebook представил новую систему управления исходными текстами Sapling, opennews (??), 16-Ноя-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


103. "Facebook представил новую систему управления исходными текст..."  +2 +/
Сообщение от Вы забыли заполнить поле Name (?), 17-Ноя-22, 06:32 
>  Вместо того чтобы использовать git submodule и подобное. Ядро linux не такой уж и маленький проект, но при этом у них проблем с монорепозиториями.

Потому что git тормозит на их размерах. Ядро linux не маленький проект - это правда, но попробуй например собрать chromium, а потом, измерив время чекаута и размер на диске, умножь его на порядок или даже больше, потому что это только 1 проект в google.

> Почему все крупные компании решают что монорепозиторий с единственной веткой это так как должно быть.

* Унификация инструментов (контроль версий, системы сборки, аудит кода и т.п.)
* Один источник истины (всегда знаешь, где найти код любого проекта)
* Много проектов в таких компаниях используют подход зеленый транк и статическую сборку

> То есть скидывать весь код всех лидов и всех стажёров в одну репу в одну ветку это нормально.

Теоретически они друг другу не мешают.

Ответить | Правка | Наверх | Cообщить модератору

113. "Facebook представил новую систему управления исходными текст..."  +1 +/
Сообщение от Аноним (113), 17-Ноя-22, 13:10 
> Почему все крупные компании решают что монорепозиторий с единственной веткой это так как должно быть.

Абсолютно верное замечание. Сваливать всё в одну кучу - БАРДАК.

> * Унификация инструментов (контроль версий, системы сборки, аудит кода и т.п.)

Не понял, что ты там наунифицировал... подробнее можно? Как сборка проекта соотносится с тем, что какой-то идиот свалил в одну кучу весь код?

> Один источник истины (всегда знаешь, где найти код любого проекта)

Ты случайно не блондинка с 5-килограмовой сумкой, где слоями лежит "всё нужное"? :) Каталоги диска - ты думаешь, их от скуки придумали что ли? Это и есть ПОРЯДОК, каталогизация, чтобы то, что тебе нужно, лежало ОТДЕЛЬНО. Или ты не в состоянии прочесть имена 20 реп?

> Много проектов в таких компаниях используют подход зеленый транк и статическую сборку

Что такое "зелёный транк"? И причём тут "статическая сборка"? Загружаешь код из всех нужных реп и компиляешь, в чём проблема-то?

Ответить | Правка | Наверх | Cообщить модератору

128. "Facebook представил новую систему управления исходными текст..."  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 17-Ноя-22, 22:47 
>> * Унификация инструментов (контроль версий, системы сборки, аудит кода и т.п.)
> Не понял, что ты там наунифицировал... подробнее можно?

Любые действия с иторией репозитория и кодом, т.к. изменения атомарны. Коммит триггерит все нужны хуки в CI.

> Как сборка проекта соотносится с тем, что какой-то идиот свалил в одну кучу весь код?

Сборка статическая. Все всегда используют последнюю версию либ.  

>> Один источник истины (всегда знаешь, где найти код любого проекта)
> Ты случайно не блондинка с 5-килограмовой сумкой, где слоями лежит "всё нужное"?
> :) Каталоги диска - ты думаешь, их от скуки придумали что
> ли? Это и есть ПОРЯДОК, каталогизация, чтобы то, что тебе нужно,
> лежало ОТДЕЛЬНО. Или ты не в состоянии прочесть имена 20 реп?

А кто будет делать поиск по перекрестным репозиториям? Вот для chromium спецаильно для этого сделана инфраструктура https://source.chromium.org/chromium

>> Много проектов в таких компаниях используют подход зеленый транк и статическую сборку
> И причём тут "статическая сборка"?

Версий нет. Все собирается с мастера.

> Загружаешь код из всех нужных реп и компиляешь, в чём проблема-то?

Уже ответил выше. Тяжело всем этим управлять, изменения не атомарны (сначала сделать измения в репозитории либы, потом в репозитории основного проекта).

Ответить | Правка | Наверх | Cообщить модератору

129. "Facebook представил новую систему управления исходными текст..."  +/
Сообщение от Вы забыли заполнить поле Name (?), 17-Ноя-22, 22:52 
> Что такое "зелёный транк"?

trunk based development

Ответить | Правка | К родителю #113 | Наверх | Cообщить модератору

115. "Facebook представил новую систему управления исходными текст..."  +1 +/
Сообщение от fuggy (ok), 17-Ноя-22, 14:23 
Так вот зачем независимые проекты пихать в одну репу. Это проблема явно искусственная. Некоторые проекты короткие, они завершились и нечего их больше тянуть. Никто обычно не делает монолитный проект, а разбивают его на библиотеки. Сейчас популярны микросервисы. И вот пожалуйста, один микросервис - один репозиторий. Всё равно одного микросервиса не работает над всеми сразу.
Посмотрел я chromium. Сейчас качается 1.16 GB. Не так и много по меркам. Но заглядываем в папки и видим либо платформозависимые фичи chromecast, chromeos, ios. Но мы также видим third_party которая сама по себе весит 1.62 GB. То есть chromium просто включает код сторонних библиотек с тестами и тестовыми данными в свой репозиторий.
В тоже время linux скачивает 231 MB, который работает на сотнях процессорах и особых проблем с git не знает. Достаточно лишь правильно делить на независимые модули и библиотеки.
Ответить | Правка | К родителю #103 | Наверх | Cообщить модератору

125. "Facebook представил новую систему управления исходными текст..."  +/
Сообщение от Вы забыли заполнить поле Name (?), 17-Ноя-22, 22:28 
> Некоторые проекты короткие, они завершились и нечего их больше тянуть.

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

> Сейчас популярны микросервисы. И вот пожалуйста, один микросервис - один репозиторий.
> Всё равно одного микросервиса не работает над всеми сразу.

А теперь представим, что все микросервисы (скажем их 100) зависят от одного фреймворка. И вот он находтся в 101 репозитории. Нашелся в нем баг или фичу новую сделали. И что теперь? Обновляем репозиторий фреймворка, затем 70 разных коммитов на обновление каждого микросервиса. В 71 при обновлении что-то сломалось. Оказывается новый код в фреймворке ломает этот сервис. Все заново. В итоге у нас в лучшем случае 101 коммит в разных разбросанных репозиториях.

А как могло быть? Один атомарный коммит (ну или несколько и затем сквошаться перед ребэйзом), где все тесты для каждого микросервиса сразу прогоняются. Да, это не быстро, но это происходит удаленно. И да, так живет гугл и компания.

> Никто обычно не делает монолитный проект, а разбивают его на библиотеки.

Ну библиотеки же нужно обновлять. Код статически собирают и если ты собираешь свой сервис, то он собирается с текущим кодом общей библиотеки. Обновляешь общую библиотеку - обнови код всех зависимых сервисов.

> Посмотрел я chromium. Сейчас качается 1.16 GB. Не так и много по
> меркам.

Там 10+ GB. Монолитный репозиторй в яндексе больше 40 GB и это только срез. Представь сколько занимает вся история.


Ответить | Правка | Наверх | Cообщить модератору

130. "Facebook представил новую систему управления исходными текст..."  +/
Сообщение от fuggy (ok), 17-Ноя-22, 23:37 
> обычно все живые проекты на поддержке и если там используется общий код

Скажи это google graveyard.
Или если компания захочет выложить один из своих сервисов в общий доступ, ей что придётся выдирать это из своего монорепы и создавать отдельную так и так.

> Обновляем репозиторий фреймворка

Один разработчик не обновляет 100 микросервисов сразу. Тем более эти тулзы крупных компаний как раз и предназначены, чтобы разработчик скачивал себе только нужные микросервисы. То есть у него на локальном компьютере не весь проект и обновить его весь целиком это долго. А то что отдельные микросервисы или весь репозиторий тестируется на сервере тут от типа организации кода не зависит.
Тут даже подход npm выглядит лучше, когда есть отдельные библиотеки и новые версии скачиваются в момент установки. Библиотека тестируется отдельно. Никто 100 микросервисов не деплоит одновременно у них каждого свой релизный цикл, так что какая разница как они хранятся. А значит ни про какую атомарность говорить не стоит.
Хотят компании так пользоваться, пускай пользуются.

> Один атомарный коммит

Зато git status выполняется несколько минут. И чекаут неограниченное время. То есть слив всё в одну репу, получили атомарный коммит, но зато он делается в 10 раз дольше чем обычный.

> Представь сколько занимает вся история.

А сколько бы полезного можно было сделать не разрабатывая свои велосипеды для управления монорепо. После этого они разрабатывают всякие Bazel/Buck build чтобы он билдил только те куски, которые изменились. И ещё кучу вещей, которые были бы не нужны, если было было бы всё разделено по отдельным репозиториям.


Ответить | Правка | Наверх | Cообщить модератору

131. "Facebook представил новую систему управления исходными текст..."  +/
Сообщение от Вы забыли заполнить поле Name (?), 18-Ноя-22, 01:57 
>> обычно все живые проекты на поддержке и если там используется общий код
> Или если компания захочет выложить один из своих сервисов в общий доступ,
> ей что придётся выдирать это из своего монорепы и создавать отдельную
> так и так.

Они так и делают, а потом отдельно синхронизируют.

Ответить | Правка | Наверх | Cообщить модератору

116. "Facebook представил новую систему управления исходными текст..."  +/
Сообщение от fuggy (ok), 17-Ноя-22, 14:40 
В итоге что мы получаем. Сначала сваливаем весь код в одну кучу, а потом делаем тулзу, которая будет скачивать только нужные для работы куски проекта. Так может не надо было сразу сваливать весь код в кучу.
Ответить | Правка | К родителю #103 | Наверх | Cообщить модератору

127. "Facebook представил новую систему управления исходными текст..."  +1 +/
Сообщение от Вы забыли заполнить поле Name (?), 17-Ноя-22, 22:31 
> В итоге что мы получаем. Сначала сваливаем весь код в одну кучу,
> а потом делаем тулзу, которая будет скачивать только нужные для работы
> куски проекта.

Что тебя в этом смущает? Есть внутренняя задача - ее решают. Не на твои же деньги. И никто тебе не предлагает делать также. Но скакать по 10+ репозиториям и управлять версиями в субмодулях - это еще тот геморрой.

Ответить | Правка | Наверх | Cообщить модератору

133. "Facebook представил новую систему управления исходными текст..."  –2 +/
Сообщение от Аноним (133), 20-Ноя-22, 02:33 
> И никто тебе не предлагает делать также.

Ахах. Ахахах. Ахахахахах.

"Если [big company name] сделала эту штуку, значит, нам она тоже нужна, ведь там же не дураки сидят! Надо быть на острие прогресса! И в моём резюме будет красиво смотреться!"

> скакать по 10+ репозиториям и управлять версиями в субмодулях - это еще тот геморрой.

А это никак не автоматизируется, не? Скриптики какие-нибудь, не?

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру