Допустим, у меня есть 3 репозитория git, каждый с папкой lib
и tests
в корне. Все 3 репозитория являются частью того, что я хочу сделать одним пакетом, однако для меня важно хранить репозитории отдельно.
Я новичок в git из svn, поэтому я читал о submodules
и чем они отличаются от svn:externals
. В SVN у меня может быть один
lib/vendor/package
Каталог
и внутри package
Я мог бы установить 3 внешних объекта, указывающих на каждый из моих каталогов lib
из 3 репозиториев, переименовывая его соответствующим образом, как
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, чтобы разрешить сопоставления моих каталогов, как указано выше.