Ответ 1
Вы не можете этого сделать, git подмодули не могут быть перенесены вверх по потоку в репозиторий svn через 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
Любые идеи/предложения?
Вы не можете этого сделать, git подмодули не могут быть перенесены вверх по потоку в репозиторий svn через git -svn, он не поддерживает это.
git -svn не позволяет этого, но если у вас есть доступ к серверу репозитория SVN, вы можете установить SubGit в него. Он создаст связанный репозиторий Git для вас, так что любое нажатие на него будет автоматически переведено в версию SVN и наоборот. После этого вы можете добавить подмодули в результирующий репозиторий Git и работать с репозиторием SVN, используя чистый интерфейс Git. Эти подмодули Git не будут переведены в SVN.
Перевод является совместимым и достаточно прозрачным (svn: ignores будет переведен на Git игнорируется, EOLs на .gitattributes, теги на теги и т.д.).