Как настроить структуру git, где подмодулю требуется внешняя библиотека под ним? - PullRequest
3 голосов
/ 24 ноября 2011

Я использую git, и мой проект (MyProject) добавил в качестве подмодуля общедоступный проект git, размещенный на github (SubProject) под своей структурой каталогов.SubProject требует, чтобы библиотека (SomeLibrary) содержалась под его структурой каталогов.

Теперь это отстой, потому что если бы не SubProject, требующий, чтобы SomeLibrary находился под ним, это было бы очень просто.Поскольку я уже добавил SubProject как подмодуль MyProject, больше делать нечего.Тем не менее, SomeLibrary является обязательным и не размещается в любом git-репозитории.Поэтому я создам новый репозиторий и помечу его номером версии.Но каков наилучший способ связать все это вместе?

Когда SomeLibrary находится в git-репозитории, который я создаю для него, могу ли я добавить SomeLibrary как подмодуль под MyProject, или это должен быть подмодуль SubProject?Если это подмодуль SubProject, каков наилучший способ сделать это, зная, что со временем мне может понадобиться обновить SubProject из новых отмеченных выпусков?Пример рабочего процесса действительно поможет мне обдумать это, потому что у меня возникают проблемы с концептуализацией того, как это будет выглядеть.(Например, я должен выполнить ветвление SubProject, прежде чем что-то делать, или это не нужно, то есть я мог бы просто извлечь SomeLibrary под SubProject и зафиксировать ...)

1 Ответ

0 голосов
/ 24 ноября 2011

Если вы используете какую-то систему сборки (make, maven, ant, MSBuild и т. Д.), Возможно, вы можете обойти всю проблему, разместив библиотеку где-нибудь в родительском репозитории git и заставив систему сборки скопировать библиотеку. субмодулю при сборке.

В противном случае вам может потребоваться создать ветку в подмодуле, добавить библиотеку и зафиксировать, а затем зафиксировать изменение подмодуля в родительском репозитории. Всякий раз, когда автор подмодуля производит обновление, вы должны вставить его в свою ветку (тем самым предоставив вам обновление, сохранив библиотеку), и зафиксировать в родительском репозитории. Однако, если вы хотите клонировать родительский репозиторий git на других компьютерах и получить правильное содержимое подмодуля, вы должны переместить эту ветку подмодуля в какое-то место, которое вы контролируете (например, на свой собственный github-форк проекта). Следовательно, подмодуль понадобится для удаленных устройств: исходного проекта github (для получения обновлений от автора) и вашего github-форка (для объединения обновлений автора с вашей веткой библиотеки).

...