Git Подмодули. Как мне сделать их полностью автономными? - PullRequest
0 голосов
/ 11 октября 2009

Я счастливый пользователь Github. Со временем я накопил несколько маленьких не связанных игрушек репо. Теперь я хотел бы создать контейнерное репо - назовите его playpen, перетащите мои различные игрушечные проекты под родительский манеж в виде подмодулей git и перенесите их в исходные репозитории игрушек. Игрушки должны жить только в манеже. Когда я попробовал это по этому рецепту: http://git.or.cz/gitwiki/GitSubmoduleTutorial, я обнаружил большую проблему. Понимаете, я хочу полностью сделать репозитории, чтобы они жили только под манежом. Когда я пошел дальше и сдул репозитории в github, я не смог перейти по ссылкам внутри манежа. А?

Может кто-нибудь объяснить мне, как это сделать? Заранее спасибо

Cheer, Дуг

Ответы [ 2 ]

3 голосов
/ 11 октября 2009

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

0 голосов
/ 05 ноября 2009

Вы можете объединить свои различные репозитории в один репозиторий, но не с подмодулями. Хотя метод, который я могу предложить, имеет серьезные недостатки. После объединения ваших игрушечных проектов они больше не действуют как отдельные проекты. Вы не можете сделать коммит только для одного проекта, вы должны зафиксировать их все одновременно. Точно так же вы не можете разветвлять только один из проектов, каждая ветвь является ветвью всех проектов. Таким образом, если вы использовали несколько веток или есть вероятность, что вы захотите разветвить отдельный проект в будущем, используйте отдельные репозитории.

Если после всего этого вы все еще хотите объединить свои различные репозитории, тогда вы можете использовать часть идеи из , как использовать стратегию объединения поддеревьев . Хотя, поскольку вы не планируете хранить старые репозитории, вам никогда не понадобится объединение поддеревьев.

Важным битом из документа стратегии слияния поддеревьев являются следующие команды, которые вы должны запускать из нового хранилища контейнеров:

$ git remote add -f Bproject /path/to/B
$ git merge -s ours --no-commit Bproject/master
$ git read-tree --prefix=dir-B/ -u Bproject/master
$ git commit -m "Merge B project as our subdirectory"

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

$ git remote rm Bproject

На этом этапе ваш контейнерный репозиторий содержит Bproject. Вы можете повторить эти шаги для объединения в дополнительные проекты. Однако, как я упоминал ранее, только основная ветвь была объединена, любые другие ветви, которые могли иметь ваши проекты, не будут объединены.

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