Ответ 1
Вы должны реализовать B как submodule.
git submodule add git://yourdomain.com/path/to/B path/to/B
Где git://yourdomain.com/path/to/B
- удаленный путь к B.
И path/to/B
- это локальный каталог, в который вы хотите поместить его в A.
Затем каждый раз, когда вы клонируете репо A, вам нужно будет сделать git submodule update
. И B будет обновлен.
Capistrano управляет им автоматически, если вы определяете :git_enable_submodules
как true.