Git, как локально вкладывать удаленные каталоги? - PullRequest
2 голосов
/ 26 января 2012

Я пытаюсь создать мастер-репозиторий с корневым каталогом с именем «lib», в котором находятся 2 подкаталога «js» и «html».При создании локальных веток / dev на основе 'lib' мне нужно вытащить главный каталог 'html', но внутри этого каталога мне нужен последний каталог 'js'.

Fyi, html содержит несколько шаблоновдля различных проектов js содержит как собственные библиотеки Javascript, так и сторонние: jquery, YUI, Cufon и т. д. В идеале я хочу брать репо из сторонних источников, где это возможно, хотя пока могу жить без него.

В моем случае «js» должен быть отделен от «html», потому что он используется другими проектами, которые не имеют никакого отношения к каталогу «html», но проекты, основанные на шаблонах из «html», всегда требуют «js»'.

Итак, мои вопросы:

  • Могу ли я вкладывать' js 'в' html 'для веток разработки / локальных веток?

Я читал о подмодулях в этом вопросе SO и редких проверках , но я не понимал, как любой из них мог бы достичь вышеуказанного - если бы я не клонировал '/ lib 'и редкие проверки' / lib / html / templНапример, ate1 / ', а затем внутри' / lib / html / template1 / js / 'клонируйте тот же репозиторий и разреженную проверку' / lib / js '.В этом случае мой второй вопрос:

  • Если я вложу редкие проверенные репо, что произойдет, когда я а) сделаю коммит на более высоком уровне ('/ lib / html / template1 /'), а также когда я фиксирую на вложенном уровне ('/ lib / html / template1 / js /')? Это звучит немного странно для меня.

Когда работазавершив локальную ветку (и), мы слились бы с веткой dev.Когда проект будет завершен, мы объединяем dev и master.Итак, третий вопрос:

  • Позволит ли предлагаемое решение указанным выше структурам каталогов и описанному рабочему процессу?

Диаграмма, в которой представлен предлагаемый рабочий процесс: Diagram outlining the proposed workflow


Я более чем рад, что мне сказали, что у меня искажена концепция, но если это так, пожалуйста, помогите мне, объяснив, почему и как я могу достичь вышеизложенного.Я абсолютно не Git Pro, я пытаюсь начать работать с Git.

1 Ответ

1 голос
/ 26 января 2012

Примечание: субмодуль может быть извлечен в любом филиале, который вам нужен: вы можете находиться в филиале A в родительском репо и в филиале B в субмодуле, родительскому репо это не важно. Все родительские записи репо являются коммитом SHA1 субмодульного репо.

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

  • поддерживает три отдельных репозитория Git (lib, js и html)
  • ссылка js и html как подмодули в lib репо
  • (это хитрость) поддерживает отдельную структуру каталогов lib с символическими ссылками на html и js.

Другими словами:

  • вы клонируете lib и инициализируете свои репо html и js, что не дает ожидаемой структуры каталогов (у вас даже нет каталогов html или js в lib, поскольку вы не обновляли свои подмодули).
  • Вы клонируете html и js репо отдельно
  • вы создаете отдельную структуру каталогов (не Git) с:
    • символическая ссылка на lib клонированное репо
    • lib/html символическая ссылка на html клонированное репо
    • lib/html/js символическая ссылка на js клонированное репо

Чтобы ваше родительское репо lib (с инициализированными, но не обновленными подмодулями) обнаружило изменения в ваших двух подмодулях, вы также можете создать символические ссылки из вашего репо lib на два отдельных html и js клонированные репозитории.
Таким образом, вы можете совершить lib репо с недавно обновленными двумя подмодулями.

Однако все ваши текущие разработки сделаны из не-git структуры каталогов, которая соответствует вашей ожидаемой организации.

...