Как работать с подмодулями и n-ярусными стратегиями git-репозитория - PullRequest
5 голосов
/ 06 июля 2011

Мы мигрируем в git. У нас есть большое количество модулей, которые составляют наши продукты, некоторые из них разделены между продуктами. Продукт представлен «тонким» супер-репозиторием (ssh: //server/product.git), который содержит только подмодули:

[submodule "module1"]
path=module1
url=ssh://server/product/module1.git
[submodule "module2"]
path=module2
url=ssh://server/product/module2.git
...

Я могу клонировать супер-репозиторий, работать с субмодулями и фиксировать их, а затем фиксировать субмодули в супер-репозиторий.

Проблема возникает, когда я хочу представить другой уровень. Существует два основных сценария (они могут комбинироваться для создания более сложных установок, но что угодно должно быть их комбинацией):

  1. Как разработчик, я клонирую центральное хранилище и работаю. Затем я хочу отправить свой код на наш сервер непрерывной интеграции, прежде чем объединить мои изменения с центральным репозиторием. Я позволил серверу CI клонировать мое хранилище. Это не работает, CI-сервер клонирует мое супер-репо, а затем клонирует субмодули из центрального хранилища (поскольку это то, что сказано в .gitmodules).

  2. Как команда, мы хотим иметь интеграционный репозиторий, к которому мы стремимся, прежде чем мы, в конце спринта, объединяем наш код с центральным репозиторием. Это не удается по той же причине.

Я попытался указать относительные URL-адреса для подмодулей, но это также не работает, поскольку, когда мы клонируем второй уровень в третий уровень, относительные URL-адреса разрешаются относительно местоположения хранилища второго уровня, но местоположений подмодуля второго уровня внутри супер-хранилища второго уровня.

Могу ли я получить это оба? Подмодули Git и структура n-уровневого репозитория?

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Если я вас правильно понимаю, вы хотите иметь подмодули git в других подмодулях и иметь возможность проверить репозиторий верхнего уровня и правильно проверить все слои вложенных подмодулей n ?

Я никогда не делал этого сам, но вы можете найти Git submodule внутри подмодуля (вложенные подмодули) хорошее чтение.

0 голосов
/ 08 июля 2011

относительные ссылки не работают в подмодулях. Используйте gitolite для размещения всех ваших хранилищ. Ваша структура будет работать тогда.

У других URL-адресов также были проблемы. В качестве примера можно привести URL-адрес типа ..\someotherrepo или \\servername\reponame или даже file:///\\server\... для подмодуля.

...