Скажем, у меня есть 3 git репозитории, каждая с папкой lib и tests в корне. Все 3 хранилища являются частью того, что я хочу быть единственным пакетом, однако для меня важно сохранить отдельные репозитории.
Я новичок в git, исходящий из svn, поэтому я читал на submodules и как они отличаются от svn:externals. В SVN у меня может быть один
lib/vendor/package
а внутри package я мог бы настроить 3 внешних элемента, указывающих на каждый из моих 3-х репозиториев lib, переименовывая его соответствующим образом, как
lib/vendor/package/a -> repo1/lib
lib/vendor/package/b -> repo2/lib
lib/vendor/package/c -> repo3/lib
но из моего понимания это невозможно с помощью git. Я что-то пропустил?
На самом деле я надеюсь, что это можно решить одним из двух способов.
- Кто-то укажет, как создать 4-й репозиторий git, который имеет другие 3 в качестве подмодулей, организованных, как я уже упоминал выше (где я могу иметь папку
a,bиcвнутри корень) - Кто-то укажет, как установить это с помощью
svn:externalsв сочетании с поддержкой githubs svn, ссылаясь на каталогlibв каждом хранилище git (из моего понимания это невозможно).
Обновление:
Я действительно пытался следить за учебником подмодулей, с которым вы связались, но я столкнулся с следующей проблемой.
Выполнение действий, как показано выше, вместо отображения типа
lib/vendor/package/a -> repo1/lib
lib/vendor/package/b -> repo2/lib
lib/vendor/package/c -> repo3/lib
Я остался с
lib/vendor/package/a -> repo1
lib/vendor/package/b -> repo2
lib/vendor/package/c -> repo3
это не идеально, поскольку теперь для доступа к ClassA внутри папки repo1 lib путь
lib/vendor/package/a/lib/ClassA
когда я действительно пытаюсь получить (и это возможно с помощью svn: externals)
lib/vendor/package/a/ClassA
поскольку a выше на самом деле repo1/lib, а не корневой каталог repo1.
Что-то вроде этого важно, поскольку, например, PHP5.3, используя SplClassLoader (http://gist.github.com/221634), это требует отображение пространства имен в каталог, например
\Package\a\ClassA -> lib/vendor/package/a/ClassA
Вот где мое концептуальное недоразумение заключается в том, как настроить этот 4-й репозиторий git, чтобы разрешить мои сопоставления каталогов, как указано выше.