Git Reference Общий каталог / репо

Макет проекта:

/project_a
   /shared
/project_b
   /shared
/shared

И project_a, и project_b должны содержать общую папку. В svn мы использовали svn:externalsand, который работал нормально, поскольку svn может ссылаться на подкаталоги (также с относительными путями). Тем не менее, мы перешли на git и, похоже, не поддерживаем проверку subdir.

Наше решение теперь состоит в том, чтобы поместить project_a, project_b и поделиться ими в разные репозитории git и использовать подмодули git в project_a и project_b. However this seems much more complicated than one monolithic svn repo with svn:externals. What's the correct way to handle common elements in git?

EDIT: The consensus is submodules are the way to go. But having used it for a day, it seems very unfriendly to use.

After making a change to a file in shared, I have to:

  1. Commit the change in shared
  2. Push the change in share
  3. Add the shared directory again in the parent directory
  4. Push the parent directory

Compared to a single commit in svn, this seems way more complicated. And missing one of these steps results in a huge versioning mess. Я что-то здесь упускаю?

1 ответ

Решение

Подмодули - правильный ответ.

Тот факт, что вы не сохраняете монолитный подход SVN, в значительной степени спроектирован с использованием DVCS (где вы помечаете и ссылаетесь на хранилище как на все).

Это позволяет вам ссылаться на точную конфигурацию (см. Истинную природу подмодулей), то есть вы всегда будете ссылаться на точную ссылку SHA1 (в отличие от svn external, где вы не обязаны указывать номер редакции).

Другие вопросы по тегам