Как разделить монорепо на несколько команд, каждая из которых имеет доступ только к репо? - PullRequest
0 голосов
/ 29 июня 2018

есть много хороших преимуществ в monorepo, мы также читаем, что крупные компании, такие как google и facebook, используют эту технологию для хранения всего исходного кода в одном репо.

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

пример у нас есть микросервисная инфраструктура

сервис А служба B Api Gateway служба A здесь разрабатывается с использованием команды A, а служба B разрабатывается другой командой (командой b), в то время как Api Gateway является обычным репозиторием в этом проекте.

Теперь, как мы можем ограничить доступ каждой команды только к своему сервису?

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

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

спасибо

1 Ответ

0 голосов
/ 29 июня 2018

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

для этого вы должны проверить частичную a.k.a узкую функцию клонирования, которая является довольно слабой стороной. Я не уверен, что какой-либо сервис в настоящее время поддерживает его, но если у вас есть собственный сервер, вы, вероятно, можете установить его там самостоятельно. Смотри https://github.com/git/git/blob/master/Documentation/technical/partial-clone.txt

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

в противном случае git не имеет контроля доступа для чтения

...