Хороший способ организации Git-репозитория нескольких проектов - PullRequest
6 голосов
/ 06 января 2011

Существует 1 основной проект RoR и 2 дополнительных проекта совместно используют некоторые части основного проекта - модели, плагины и т. Д.

В настоящее время все проекты находятся в одном репозитории svn с внешними svn для общих частей.

Каков наилучший способ перемещения такого макета в git?

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Вам понадобится репозиторий для каждой из частей. (каждый проект и один или несколько для общих частей).

Чтобы включить эти общие части, есть две возможности.

Сначала просто, вы создаете (приватный) гем для общих частей, это означает, что вам не нужно ничего связывать, просто добавьте gem [gemname] в ваш Gemfile. Когда вы обновите гем, все проекты будут использовать измененный код.

Если вы хотите включить внешний код в ваш проект, вам нужно немного организовать. Вы создаете корневую карту, в которую вы клонируете и общий репозиторий, и репозиторий проекта. Затем вы создаете (относительную) символическую ссылку на папку общего кода. Вы можете просто добавить эту символическую ссылку в ваш репозиторий git и зафиксировать ее. Вы должны обновить и зафиксировать оба репозитория по отдельности.

Пример второго метода:

- projectfolder
--- shared code
--- project code
----- lib
------- shared (link to shared code)

Ссылка на общий код создается командой ln -s "../../../shared code" shared

Конечно, это работает только в системах, поддерживающих символические ссылки (mac и * nix)

2 голосов
/ 22 сентября 2011

Несмотря на то, что я принял первый ответ, мы выбрали совсем другой подход.

Поскольку практически все приложения являются просто разными аспектами 1 проекта (frontend, backend и api), они совместно используют LOT, поэтому мы решили поместить их все в 1 репозиторий и общие части symlink (git может справиться с этим).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...