Использование подмодулей git в проекте git -svn

В нашем управляемом проекте git -svn у нас есть 3 восходящих проекта, которые все хранятся в родных репозиториях git на GitHub. Поскольку исходный код этих восходящих проектов находится под нашим контролем и часто меняется, наше текущее решение, а именно повторное развертывание артефактов сборки в суперпроекте, каждый раз, когда мы что-то меняем, довольно громоздко.

Что бы я хотел, так это:

parent project (git-svn):
    --> submodule 1 (git)
    --> submodule 2 (git)
    --> submodule 3 (git)

Таким образом, исходный код для подмодулей 1-3 скомпилирован вместе с источниками для суперпроекта, но я могу отдельно изменять подмодули.

Вопрос: что происходит, когда я git svn dcommit в родительском проекте? Это даже работает?

UPDATE Hm, я просто создал простую структуру проекта, пытаясь походить на этот сценарий, и я получаю это сообщение об ошибке при попытке dcommit в суперпроекте:

a0301b11f3544a1e71067ff270eded65e4c8afbd doesn't exist in the repository at /opt/local/libexec/git-core/git-svn line 4775
Failed to read object a0301b11f3544a1e71067ff270eded65e4c8afbd at /opt/local/libexec/git-core/git-svn line 574

Любые идеи/предложения?

Ответы

Ответ 1

Вы не можете этого сделать, git подмодули не могут быть перенесены вверх по потоку в репозиторий svn через git -svn, он не поддерживает это.

Ответ 2

git -svn не позволяет этого, но если у вас есть доступ к серверу репозитория SVN, вы можете установить SubGit в него. Он создаст связанный репозиторий Git для вас, так что любое нажатие на него будет автоматически переведено в версию SVN и наоборот. После этого вы можете добавить подмодули в результирующий репозиторий Git и работать с репозиторием SVN, используя чистый интерфейс Git. Эти подмодули Git не будут переведены в SVN.

Перевод является совместимым и достаточно прозрачным (svn: ignores будет переведен на Git игнорируется, EOLs на .gitattributes, теги на теги и т.д.).