Похожие чаты

Коллеги, привет! Поделитесь, пожалуйста, опытом — какие плюсы и минусы хранения

проекта документации в репозитории с кодом?

35 ответов

11 просмотров

Отличный вопрос для собеседования

в отличии от хранения проекта документации в репозитории без кода?

Привет. Имеете в виду проблемы монорепозитория?

Tatiana
да, все так)

я не знаю, но с удовольствием послушал бы ответы)

Самая распространённая проблема — очередь на слияние. Бывает из-за этого ваш коммит может отставать от актуального состояния. Ну и надо уметь в rebase.

Плюсы: 1. Дока версионируется вместе с кодом, тяжелее потерять и сделать рассинхрон; 2. Можно загнать разработчиков писать документацию, не отходя от кассы — в их же проекте; 3. Можно передавать заказчику всё единым дистрибутивом.

Fox Mulder
Самая распространённая проблема — очередь на слиян...

можно поподробней? я не понял, и у меня родилось несколько несвязанных объяснений твоих слов

rJIynbIu` KOT
можно поподробней? я не понял, и у меня родилось н...

Если команда начинает изменять один и тот же файл, то при мерже будут возникать конфликты, которые надо уметь решать.

vnv rus
А минусы?

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

rJIynbIu` KOT
можно поподробней? я не понял, и у меня родилось н...

Это известная проблема монорепозиториев, когда все коммиты сбрасываются в одну репу, то формируется очень большое кол-во деревьев. И если у нас большое кол-во проектов\команд пушит в эту репу, то возникает временной лаг. Когда твой коммит становится в очередь. Находясь в очереди твой коммит может устареть и тогда тебе надо отменить его, ребейзнуть локально до актуального стейта и снова запушить. В очень больших командах с монорепозиторием в моей практике было, что коммит мог висеть в очереди и час. Плюс, не забываем, что коммит надо апрувнуть. На апрув, а точнее очередь на слияние, тоже может быть очередь. Поэтому, я для себя понял, что если команда большая, то монорепа не лучший выбор.

Fox Mulder
Это известная проблема монорепозиториев, когда все...

> все коммиты сбрасываются в одну репу, то формируется очень большое кол-во деревьев именно коммиты, а не PR? или в данном случае это одно и тоже? у нас сейчас только для репозитория документации висит 500 незакрытых PR, то есть они в работе или ждут апрува и вливания и я не вижу здесь никаких проблем, так как люди не правят одно и то же, то есть не выполняют одинаковых задач, а конфликты если и появляются, то относятся к разным вещам (хоть и в одном файле) и легко решаются > В очень больших командах с монорепозиторием в моей практике было, что коммит мог висеть в очереди и час. у нас PR с изменения может и месяц провисеть, ожидая апрува и вливания, и в этом я тоже не вижу проблем, даже через месяц конфликты редки, а если и есть, то легкорешаемые

про обычный

rJIynbIu` KOT
про обычный

Про обычный все справедливо. А Фокс про моно вещает. Там есть нюансы, насколько я могу судить.

rJIynbIu` KOT
> все коммиты сбрасываются в одну репу, то формиру...

Да, конечно, я приравнял коммиты с PR\MR в данном контексте. То что у вас незакрытые таски висят по месяцу — уникальный процесс именно для вашей компании. Если вы работаете по недельным спринтам, то задержка в закрытии задач неприемлема. Особенно, если у вас на таски привязан и KPI.

Fox Mulder
Да, конечно, я приравнял коммиты с PR\MR в данном ...

понял, кажется у нас очень хороший уникальный процесс)

rJIynbIu` KOT
понял, кажется у нас очень хороший уникальный проц...

Тем более смотрите. Вот такая ситуация. У вас 20 микросервисов в монорепе и согласно релизной концепции, каждый микросервис обзаводится релизной веткой только если он не ломает работу остальных 19 микросервисов. И вот вы либо бежите вперед или отстаёте; отсюда и возникает проблема в актуальном состоянии всего продукта. Ну и если у вас много этих микросервисов, то рано или поздно, ваш git станет захлёбываться от коммитов (тут именно про них) в рамках одной монорепы. Любое обновление состояния (даже локального) начинает занимать очень большое время. Я знаю в Гугле монорепа, но у них своя система контроля версий, а как и что, я ессно не знаю.

Наверное, имеет смысл уточнить, какая именно документация. Допустим, документация, которая после коммита пушится и заливается на продакшн - это одно. Документация, которая просто "живет в себе" (например, для команды) - это другое. Т.е. входных данных изначально должно быть больше, ибо непонятно, о чем речь. Поэтому ответы выше по треду имеют свою ценность, но только по отношению к конкретной ситуации, которую _предполагал_ автор каждого этого ответа.

Tatiana- Автор вопроса
Eduard Tibet
Наверное, имеет смысл уточнить, какая именно докум...

Спасибо за уточнение! Вопрос был про документацию для продакшна.

Всегда можно восстановить если потеряется или потрется текст (такое бывает)

Tatiana
Спасибо за уточнение! Вопрос был про документацию ...

Тогда следует уточнить вопрос про релизные циклы. Ибо, допустим, когда релизный цикл документации один, а выпуск продукта - другой встает вопрос того, что в дереве реальная каша. Да, можно встроить сборку отдельно по коду и по исходникам документации - допустим, когда делается фикс к документации, но код остается нетронутым (например,Gitlab CI это позволяет). Но тогда придется в одном дереве держать разные теги например, 2.1.3, 2.1.3-docs - а бранчей вообще будет огромное количество, Насколько это удобно - вопрос использующих это дерево.

Fox Mulder
Это известная проблема монорепозиториев, когда все...

Интересуюсь этой темой, но пока не понимаю жаргона этой области. Для начала, монорепа - это репозиторий, в котором хранится код вместе с документацией?

Vasil Bar
Интересуюсь этой темой, но пока не понимаю жаргона...

Вообще, монорепозиторий это когда вся компания хранит весь код буквально в одном репозитории. Для этого используют специальные системы контроля версий (не гит). Применяют в некоторых крупных компаниях, точно знаю про Яндекс и Фейсбук.

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

Nick Volynkin
Вообще, монорепозиторий это когда вся компания хра...

Какие плюсы у такого подхода? И минусы? Про минусы, как понимаю, можно долго ждать мержа?

Nick Volynkin
Вообще, монорепозиторий это когда вся компания хра...

Спасибо! А документация при этом тоже может там же храниться, как следует из обсуждения, предшествующего посту к которому я задал вопрос?

Vasil Bar
Спасибо! А документация при этом тоже может там ж...

Всё в одном репозитории. Вообще все, все продукты, все вспомогательные штуки, тесты, документация. Когда вы приедете работать в такую компанию, вас научат. До тех пор можно об этом не беспокоиться:)

Nick Volynkin
Всё в одном репозитории. Вообще все, все продукты,...

Обучаться рад, не боюсь этого, обучаюсь быстро. Но они жев вакансиях требуют опыт работы и

Vasil Bar
Обучаться рад, не боюсь этого, обучаюсь быстро. Но...

Никто не требует в вакансиях навык работы с монорепозиторием

Vasil Bar
Работы с git.

А, гит полезен, да.

Уточните вопрос, пожалуйста. С чем мы это сравниваем: с хранением доки в отдельном репозитории или с другими инструментами для документации?

Vasil Bar
Интересуюсь этой темой, но пока не понимаю жаргона...

Прошу прощения, был занят. @Nick_Volynkin Всё ответил. Единственное, в чем я с ним не согласен — обычно монорепа требует своего решения, например, Google или Yandex в качестве контроля версий используют свои решения, а не GitHub | Gitlab. А вот в тех компаниях, которые используют традиционные системы контроля и имеют достаточно много микросервисов, присутствует весьма ощутимый gap между эосновными действиями. Монорепа скорее хороша, когда ваш проект небольшой. Например, у вас не такое большое кол-во библиотек и классов. Вы собираете из них проект (допустим JAVA) и тут же собираете документацию, например JavaDoc. Тогда это ваш выбор.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта