2016-01-02 3 views
8

У меня очень длинный список репозиций, которые я пытаюсь сделать в одном родительском репо, сделав все подмодули.Есть ли способ «git subodule add» репо * без * клонирования?

Я попытался добавить их к .gitmodules вручную, а также к .git/config, но он не работает.

Я также пробовал работать git submodule sync и git submodule update --init и т. Д., Но не повезло.

Есть ли способ обмануть git, думая, что у моего проекта есть все его (~ 30K) подмодули, без необходимости их клонировать?

+0

Tricking Git не имеет большого смысла. Если все, что вам нужно, это список репозиториев, тогда будет работать текстовый файл. Или система сборки. Точка подмодулей заключается в том, что вы говорите, что репо * необходимо * и, следовательно, почему оно клонировано. Теоретически вы можете сделать клон '--depth 1', но он будет работать только один раз и только если все подмодули, связанные с HEAD этих репозиториев. Тогда любые изменения могут сломать вещи. Это просто не имеет большого смысла. Не могли бы вы описать свою ситуацию лучше и что вы хотите достичь. Возможно, существует другое решение. – Sukima

+0

Почему бы не разместить ваши репозитории ~ 30K на сервере Git, как Gitolite или GitHub. Наличие мастер-репо кажется неправильным решением неправильной проблемы. – Sukima

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/34151816/multiple-repos-with-single-submodule/34266198#34266198 Единственная проблема с «локальным подходом» - это URL-адреса в '.gitmodules'. Если вы просто используете ссылки на локальные подмодули, есть изменения, которые вы получите при клонировании репо – user3159253

ответ

1

Есть ли способ обмануть git, думая, что мой проект имеет все его (~ 30K) подмодули, без фактического необходимости клонировать их всех?

??? ~ 30K подмодулей?
Неужели вы пытаетесь клонировать все хранилища github?

Нет никакого смысла иметь так много подмодулей в одном проекте.


Есть ли способ обмануть мерзавец, думая, мой проект имеет все

Нео, это то, что подмодуль используется для того, чтобы содержать 3 участника (может быть вашим, а) которая будет управляться в своем собственном репозитории.

enter image description here

Как вы можете видеть в подмодуль изображения просто подпроект внутри вашего проекта. То, что вы спрашиваете, это если есть способ сказать git, что у меня есть проект, в то время как у нас его нет вообще.

Невозможно сделать.

2

После длинной пройдите по интернету, я узнал, что вы можете достичь того, чего хотите, написав непосредственно в индексе git и создав тип файла «gitlink».

git update-index [--add] --cacheinfo 160000 <subrepo commit hash> <submod path> 

Также не следует забывать, чтобы написать subrepo в .gitmodules (объявить внешний путь, в основном).

0

Просто используйте git add.

Команда git submodule находится здесь, чтобы помочь вложить вложенные репозитории.

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

Git предпочитает простые реализации, которые могут быть сделаны для выполнения неограниченных, произвольных вещей, отбрасывая абстракции до их надлежащей роли помощников, способы говорить о том, что возможно. Попытка подогнать все то, что вы можете сделать, с помощью снимка снимков в мигающей смирительной рубашке абстракций vcs - сумасшествие. Подмодуль - это просто ссылка на даг. «Положите кончик этого дага здесь».Команда подмодуля - это просто инструменты, которые помогут вам выследить источник этого дага и защитить его от всех насильственных действий, которые вы делаете с вашей плохой перегруженной файловой системой каждый день.

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