1

Тема: Вкладені репо

Як правильно вкладати репо ?

Контекст:
Є проджект (і репо), компоненти якого треба відокремити в нові репо, тобто вони самі стануть окремими проджектами.

Зараз структура майже така:

repo-0/
    .git/
    component-1/
        component-2/
    component-3/

Майбутня структура має бути десь така:

repo-0/
    .git/
    component-1/        (+repo)
        .git/
        component-2/    (+repo)
            .git/
    component-3/        (leave in repo-0)

Як правильно перенести component-1 і -2?, щоб git clone repo-0 рекурсивно тягнув всі вкладені репо.

2

Re: Вкладені репо

Раніше завжди використовував гілки (branch). Бачив і щось таке як показано в першому повідомленні, однак там суміш усього підряд, ad-hoc запити, якісь конфіги - і серед підпапок якраз лежить проект дата сцаєнс над яким зараз ведеться робота. Вважаю це звичайним бардаком. Або ж просто не розумію глибини задуму, нащо ця вкладеність. Хіба що існує адміністративне обмеження на кількість репозиторіїв. А про бранчі просто не чули.

3

Re: Вкладені репо

Через composer і сімлінки

Подякували: leofun011

4

Re: Вкладені репо

Для початку git subtree split щоб вигризти компоненти з repo-0, зберігши їхню історію, а не просто поточні знімки цих каталогів занести у нові repo.
А тоді вже попідключати або через git subtree add чи щось таке (сам не пробував, кажуть там якась муть з merge), або через git submodule і потім операції з --recursive/--recurse-submodules .
Або розіпхати по дереву каталогів з допомогою google repo (у нас на роботі так там де тих пов'язаних репів з десяток, але я лише користуюся зробленою іншими інфраструктурою, глибоко не ліз).

Подякували: leofun01, flatliner2

5

Re: Вкладені репо

frz написав:

Раніше завжди використовував гілки (branch).

Тримати ці проджекти в одному репо більше не варіант. Те, що в минулому було компонентами, тепер має стати окремими продуктами, кожний з яких буде мати власну основну гілку і гілки для тривалої розробки окремими групами людин.

frz написав:

Бачив і щось таке як показано в першому повідомленні, однак там суміш усього підряд, ad-hoc запити, якісь конфіги - і серед підпапок якраз лежить проект дата сцаєнс над яким зараз ведеться робота.

В ентерпрайсі така вкладеність зустрічається часто. Раніше цим займались owner'и або maintainer'и. А тут я опинився в ситуації, коли maintainer це я.

frz написав:

Вважаю це звичайним бардаком. Або ж просто не розумію глибини задуму, нащо ця вкладеність. Хіба що існує адміністративне обмеження на кількість репозиторіїв. А про бранчі просто не чули.

Обмежень на кількість репо не є. Просто ми дорозроблялись до того, що деякі компоненти варто винести як окремі продукти. Таке буває, я не бачу там бардаку, навпаки, все досить акуратно погруповано.
Окремі репо є необхідністю. А вкладеність не є прям необхідністю, просто дуже бажано, щоб розробники тягали не кожний репо окремо, а все шо треба { одною або двома } командами в терміналі, і я мусю подбати щоб в них була така можливість.

Vo_Vik написав:

Через composer і сімлінки

Composer гарний інструмент, ми його користували коли мали проджекти для web.
А тепер займаюсь плюсами, то дуже хотю зробити таку розбивку засобами самого Git, якщо це можливо. З того шо я вичитав в мережі, це таки можливо. Ну а якшо не вийде, то вже тоді буду ставити composer.

ReAl написав:

Для початку git subtree split щоб вигризти компоненти з repo-0, зберігши їхню історію, а не просто поточні знімки цих каталогів занести у нові repo.
А тоді вже попідключати або через git subtree add чи щось таке (сам не пробував, кажуть там якась муть з merge), або через git submodule і потім операції з --recursive/--recurse-submodules .

О, це вже по ділу. Ото читаю як це робити

git help subtree
git help submodules

і пробую як воно працює на тестових репо.

ReAl написав:

Або розіпхати по дереву каталогів з допомогою google repo (у нас на роботі так там де тих пов'язаних репів з десяток, але я лише користуюся зробленою іншими інфраструктурою, глибоко не ліз).

Те саме, коли працював з Yocto, то все вже було поставлено на gerrit, і я там користував те шо вже є.

6

Re: Вкладені репо

Якщо не композитор, то щось таке
https://github.com/pfultz2/cget

Подякували: leofun011