2013-02-26 8 views
1

Это возможно с Git подмодуль к проверке нескольких хранилищ как подмодули в соответствующие пути, например:Git: Кассовые подмодуль файлов в одном каталоге

% git submodule add [email protected]/repo1.git ./here/is/1 
% git submodule add [email protected]/repo2.git ./here/is/2 

Но что если мне нужно оформить содержание repo1 и repo2 как в один путь, ./here/is/3?

В принципе у меня есть метрическое дерьмо-тонна подмодуль РЕПО, мне нужно, чтобы все быть проверен в иерархию очень жесткие каталогов на стороне клиента, когда пользователь делает git clone --recursive ...

Я хочу, чтобы содержимое всех подмодулей для проверки на ./somepath. Это можно сделать?

Одна вещь, которую я рассматривал, использовала символические ссылки, но это неправильно.

EDIT:

Я хочу, чтобы содержимое 1 и 2 в выше, чтобы быть размещены в одной и той же целевой каталог на клиенте. Я могу сделать это, попросив пользователя запустить скрипт после клонирования (it is not possible to have git track a single file), но похоже, что должен быть более чистый способ сделать это - вручную создание символической ссылки для каждого подмодуля - это большая работа, и кажется, что абстракция подмодуля должна быть в состоянии справиться с этим.

Возможно, мой вопрос является обманом?

ответ

1

Одним из способов были бы создать другой родительский репозиторий, с подмодулями объявлены непосредственно в нем:

newParentRepo/ 
    1/ 
    2/ 
    3/ 
    ... 

что родитель репо может быть клонирован --recursive в ./somepath и подмодулях бы непосредственно под ./somepath (в соответствующих корневых каталогах 1/, 2/, ...).

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

+0

Часть «в их корневых каталогах» является проблемой. Мне нужно, чтобы весь мусор в подмодулях перемещался (или привязывался) к произвольным местам на стороне клиента после 'git clone'. Уточнение моего вопроса, чтобы отразить это. – g33kz0r

+0

@ g33kz0r Я подтверждаю, что подмодуль * всегда * клонирован в своем собственном каталоге, никогда в директории другого подмодуля. Каждый подмодуль * должен * быть в своем собственном каталоге. Любая другая организация - проблема * развертывания * (копирование/символические ссылки), но она больше не имеет отношения к git. – VonC

+0

Хорошо. Похоже, мне нужно создать символические ссылки * априорно *, так как у Git нет крюка после клонирования. – g33kz0r

Смежные вопросы