Это вопрос, который, кажется, возникает нечасто, но, к сожалению, я не нашел ответа, который мог бы в полной мере применить к моей ситуации, поэтому решил, что задам свой вопрос. Это мой первый вопрос о ТАК, так что будьте добры. : P
«Проблема»:
Наша компания разрабатывает несколько приложений PHP, однако одно из них является своего рода «мастером». Все остальные наши приложения установлены внутри этого «главного приложения», и для работы требуется главное приложение.
Мы, конечно, используем управление версиями для управления этими приложениями.
Хотя многие файлы в наших аддон-приложениях находятся в подкаталогах, не все из них. Это означает, что мы не можем использовать импорт подкаталогов (внешние svn, подмодули git и т. Д.). Например, в корневой папке есть несколько папок (admin, public, kernel и т. Д.), А в приложениях addon есть файлы в одной или нескольких из этих папок - они не являются независимыми в структуре каталогов главного приложения. .
В настоящее время мы используем SVN и недавно обнаружили, что рассматриваем git из-за некоторых доступных функций, которые, по нашему мнению, могут быть нам полезны. Однако с git мне не совсем понятно, есть ли действительно способ «слить» (не в смысле контроля версий) эти репозитории локально в один каталог, когда разработчики работают над кодом. Я также не нашел способ сделать это с SVN.
В идеальном мире у нас был бы один репозиторий для нашего «основного» приложения со структурой, подобной следующей:
- /
- - file1
- - file2
- - / админ
- ---- file1
- ---- file2
- - / * общественный 1028 *
- ---- file1
Наше аддонное приложение будет иметь такую структуру (помните, у нас есть несколько аддонных приложений):
- /
- - FileX
- - / админ
- ---- / MyApp
- ------ file1
- ------ file2
- - / общественный
Мы экспериментировали со следующими подходами, каждый со своими оговорками:
- Все приложения в одном репозитории. Это менее чем идеально, так как становится эффективным кошмаром для управления версиями для каждого приложения (особенно в SVN). Ветвление и тегирование берут файлы из несвязанных и отдельных приложений.
- Все приложения в отдельном репозитории. Это также не идеально (ну, это с точки зрения управления / организации), потому что вы не можете экспортировать два отдельных репозитория в одну папку, поэтому вы всегда работаете с извлечением одного репозитория и экспортом других. Если вы работаете с приложением X и в нашем главном приложении произошли изменения, вам нужно вручную выполнить новый экспорт этого главного приложения и скопировать файлы в репозиторий приложения X, над которым вы работаете, чтобы получить последний код платформы.
Есть ли способ с git или SVN (или любой другой системой управления версиями в этом отношении) разрешить более одного хранилища в одном каталоге без использования подкаталогов? Внешние SVN почти идеальны, но требуют, чтобы все файлы во внешнем репозитории находились в отдельной подпапке, что, как описано выше, не работает для нас. Я полагаю, что git имеет эквивалентные возможности, но опять же не может разрешить более одного хранилища в одной папке, оставляя нас с той же проблемой.
Похожие вопросы:
Несколько репозиториев в одном каталоге (одного уровня) - возможно ли это? - это очень близко к тому, что я спрашиваю, я думаю, но я не видел ни одного решения, которое, по моему мнению, могло бы быть применено к нашей ситуации.