git вложенные репозитории - подмодули против символических ссылок против других - PullRequest
4 голосов
/ 13 июля 2010

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

У меня будет корневой каталог проекта /home/jsuggs/project.
Я также собираюсь работать с / над Zend Framework (ZF), Doctrine и другими библиотеками, но я сосредоточусь только на ZF, поскольку решение для одной из них, вероятно, будет таким же, как и для других.

Я буду клонировать репозиторий ZF2 в /home/jsuggs/zf2.
Я хотел бы иметь /home/jsuggs/project/application/library/Zend ссылку /home/jsuggs/zf2/library/Zend.

Я хочу иметь возможность работать локально в обоих репозиториях (project и zf2), где переключение веток в zf2 напрямую влияет на проект.

Мой вопрос: как мне настроить Git, чтобы глубоко вложенные библиотеки могли ссылаться на мои локальные версии во время разработки, но также могли быть установлены (другие / произвольные) расположения при развертывании в производство?

Я также хотел бы избежать того, чтобы пути были абсолютными, чтобы, если кто-то еще работал над проектом, путь к библиотеке не ссылался на мой домашний каталог.

Я изучаю использование символических ссылок и gitсубмодули, но задавался вопросом, были ли "лучшие практики" для этого типа установки.Кроме того, вполне возможно, что я просто делаю это неправильно, поэтому не стесняйтесь говорить «просто делай Х вместо этого».

1 Ответ

7 голосов
/ 13 июля 2010

Всякий раз, когда вам нужна конкретная конфигурация (конкретные ревизии) для другого набора файлов, лучше подходит компонентный подход .

С символической ссылкой вы не знаете, чтоточная версия zf2, на которую ссылается ваш проект (через путь /home/jsuggs/project/application/library/Zend).

Но с подмодулями у вас будет:

  • точная версия этого подкомпонента zf2, хранящаяся вваш проект (включая другой для рабочего развертывания, если вы хотите управлять веткой "prod"),
  • возможность изменять / модифицировать zf2 напрямую из /home/jsuggs/project/application/library/Zend (при условии, что вы фиксируете эти изменения в пределахzf2, затем зафиксируйте новую ревизию zf2 в /home/jsuggs/project/application/library, т.е. в вашем родительском проекте.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...