Cat
Он ват?
он ват ю нид
Cat
монорепу менеджить проще
Αλεχ
А чем?
хотя бы что у тебя нет 100500 миллиардов конфликтов
Крылатый
Охохо, пара десятков гигов так приятно клонируются.
Αλεχ
Охохо, пара десятков гигов так приятно клонируются.
для этого есть майкросовтовский гитфс
Αλεχ
но все равон
Αλεχ
не очень
Vladimir
Крылатый
А, ещё на монорепе не разграничить права никак.
Vladimir
А, ещё на монорепе не разграничить права никак.
Эт да, но если юзать мерж бота, то там вроде всё проще
Крылатый
Костыли, ИМХО.
Αλεχ
если функционал побит по кускам то проще мержить маленькие файлы
Αλεχ
да делаешь больше PR, но мержить проще
Vladimir
Костыли, ИМХО.
Они выполняют другую роль - держат мастер зелёным, но попутно разграничивают права - улучшают безопасность (не нужно тонны админов)
Vladimir
Файлы разграничивают конфликты, а фиксить зависимые крейты проще в монорепах
Αλεχ
Чем проще?
ревьювить есть кому
Vladimir
К тому же апдейтить версию Крейтов с зависимостями проще
Αλεχ
100 реп по 100 PR проще проревьювить
Αλεχ
за каждой репой можно закрпить чела который в ней шарит
Αλεχ
пытаться лейбликами 10к ПРов разграничить - такое себе
Αλεχ
плюс жестко заставляет вносить изменения независимо
Vladimir
Ну тут окей, решения сходу не вижу
Berkus
Этим монорепы вообще-то лучше
да, там конфликты есть ВСЕГДА пушо 100500 чел пушат 100500 изменений в 100500 файлов и конечно-же они конфликтуют
Berkus
Также было б еслиб ты создал мелкие пулреквесты
в разные репы? не, они друг другу не мешают
Αλεχ
ты бы сначала внес изменения в компонент А
Αλεχ
починил все конфликты помержил
Αλεχ
потом пошел сделал то же самое в Б
Αλεχ
потом слил
Αλεχ
в монорепе - пока чинил Б, снова развалилоась А
Vladimir
в разные репы? не, они друг другу не мешают
Ещё раз, разные файлы также изолированы как и репы
Berkus
Ещё раз, разные файлы также изолированы как и репы
понимаешь, в одной монорепе я не могу вести четыре мержа сразу, только ОДИН
Berkus
а клонировать ее четыре раза для этого, да идите в йюх
Vladimir
Почему не можешь, Раст живёт с монорепой
Vladimir
И там пулреквестов явно больше
Berkus
они не мержат, там борщ этим занимается
Berkus
и роллапы они делают именно поэтому
Vladimir
А, ты про само слитие? У гита есть кнопка мержа
Berkus
иначе заимешься по одной строчке вмерживать
Berkus
у гита вообще кнопок нету
Vladimir
У гитхаба, да, или любой другой системы что ты юзаешь
Berkus
У гитхаба, да, или любой другой системы что ты юзаешь
ну вот я юзаю голый гит с сервера, где моя кнопка теперь
Vladimir
Ты же не трекаешь репы локально, тогда вообще не понятно нахер тебе 4 ветки?
Vladimir
ну вот я юзаю голый гит с сервера, где моя кнопка теперь
Так всё-таки, ты реальный кейс проецируешь, или фантазируешь?
Vladimir
Я просто не понял зачем на голом гите держать 4 мержа
Vladimir
Но наверное надо
Berkus
Я просто не понял зачем на голом гите держать 4 мержа
ну у меня сейчас открыто 8 или 9 гитапов, в некоторых из них активные мержи новых фич, как бы я делал это с монорепой?
Vladimir
И есть ссылка на репу, чёт звучит пиздецово
Berkus
Что такое гитап?
gitup.co клиент десктопный
Berkus
И есть ссылка на репу, чёт звучит пиздецово
нет, рабочие репы не могу показать
Vladimir
нет, рабочие репы не могу показать
Так а ci у вас нету? Как процесс мержа происходит
Cat
ох уж этот словарь
Αλεχ
Так а ci у вас нету? Как процесс мержа происходит
приходит Сережа и проводит процесс. Изи
պլհկ
Пацаны шли бы вы в жерк
Vladimir
Пацаны шли бы вы в жерк
Ты как-то опоздал очень
պլհկ
Сорь
պլհկ
Делал 5 мров в монорепу
Vladimir
Делал 5 мров в монорепу
В локальную монорепу тойкио?
պլհկ
В монорепу %компанинейм%
Αλεχ
fn handle_request( req: Request<Body>, telegram_client: Arc<TelegramClient>, dbs: Arc<Mutex<HashMap<i64, Arc<Mutex<ImageDb<ImageMetadata, FileStorage<ImageMetadata>>>>>>>, ) -> impl Future<Item = Response<Body>, Error = hyper::Error> + Send { сука я ору
Αλεχ
нужно больше скобочек
Berkus
Так а ci у вас нету? Как процесс мержа происходит
я не знаю кто такой серж, наверняка он как-то происходит
Αλεχ
угу
Aleksey
нужно больше скобочек
Нужны алиасы к типам :)
Berkus
Нужны алиасы к типам :)
например, Arc<Mutex<ImageDb<>>> можно заменить на ImageDbMutarx!
Αλεχ
алиасы то алиасы
Αλεχ
но они не сильно помогают)
Αλεχ
= note: expected type () found type futures::AndThen<futures::stream::Concat2<hyper::Body>, futures::OrElse<futures::Map<futures::AndThen<futures::AndThen<futures::MapErr<futures::FutureResult<contract::Update, serde_json::Error>, [closure@src\main.rs:144:22: 147:58]>, std::result::Result<(contract::User, std::string::String, i64, i64), hyper::Response<hyper::Body>>, [closure@src\main.rs:148:23: 165:14]>, futures::MapErr<futures::AndThen<impl futures::Future, futures::future::Either<futures::AndThen<impl futures::Future, futures::future::Either<futures::Then<impl futures::Future, futures::future::Either<impl futures::Future, futures::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:198:48: 208:42 telegram_client:_, chat_id:_, text:_]>, futures::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:172:90: 215:30 file_id:_, ext:_, user:_, message_id:_, dbs:_, chat_id:_, telegram_client:_]>, futures::FutureResult<(), telegram_client::TelegramClientError>>, [closure@src\main.rs:168:31: 220:22 user:_, chat_id:_, message_id:_, telegram_client:_, file_id:_, dbs:_]>, [closure@src\main.rs:221:30: 227:22]>, [closure@src\main.rs:166:23: 228:14 telegram_client:_, dbs:_]>, [closure@src\main.rs:230:18: 233:14]>, std::result::Result<hyper::Response<hyper::Body>, hyper::Error>, fn(hyper::Response<hyper::Body>) -> std::result::Result<hyper::Response<hyper::Body>, hyper::Error> {std::result::Result<hyper::Response<hyper::Body>, hyper::Error>::Ok}>, [closure@src\main.rs:141:54: 235:6 telegram_client:_, dbs:_]>
Αλεχ
короч алиасы то да, но чуть что начинают торчать наружу