Рабочая копия Git c двумя источниками — как разрулить?
В качестве системы контроля версий пользовался всю свою сознательную жизнь (как начал пользоваться, так она и началась) Subversion (aka SVN). Тут подвернулся проект с использованием фреймворка, который хостится на GitHub, а с Git я ни разу не работал. Заказчик просит проект хостить тоже на GitHub и даже готов постоянно платить за него. На SVN-то сходу оптимальный вариант развертывания не найду, а тут совсем незнакомая система, а надо быстро. Но это прелюдия.
Собственно вопрос в чём, как грамотно реализовать ситуацию когда один каталог (фреймворк) хостится в одном репозитории целиком, кроме одного подкаталога (приложение), которое хостится в другом репозитории. Нужно, чтобы:
а) в статусе фреймворка (корневого каталога проекта) не мелькали файлы приложения (подкаталога), а фреймворк нормально производил чекаут со своего репозитория (файл .gitignore в корне там присутствует и тоже должен обновляться нормально, то есть просто занести приложение в него не получится);
б) в статусе приложения мелькали его файлы относительно репозитория приложения, в идеале, чтобы в репозитории приложения находился полностью развернутый фреймворк с приложением внутри, но не как внешняя ссылка, а как снимок проекта на момент коммита
Пока в голову приходит только развернуть фреймворк; скопировать всё, кроме информации Git, в параллельное дерево; там разворачивать приложение. После обновления фреймворка по чекауту, удалять из копии старый (простой оверрайт не пойдёт, из фреймворка файлы могут пропадать или переименовываться), оставив только приложение; копировать новый сверху поверх приложения; модифицировать приложение к реалиям новой версии и коммитить его в репозиторий приложения. Но как-то мне этот способ не нравится, очень некрасиво. Может есть лучшие варианты?
Единственное, что тогда снимок проекта в чистом виде не получится — будут известны номера ревизий модулей на тот момент. Но, конечно, это самый логичный ответ.