У меня есть два хранилища git, показанные ниже. Первый структурирован как типичный проект python.
foo_repo/
.git/
setup.py
foo/
__init__.py
some_code.py
tests/
bar/
.git/
Я хотел бы включить каталог foo_repo/foo/
в bar/
в качестве поддерева, и я хочу иметь возможность объединять обновления с foo_repo/foo/some_code.py
как из репозитория foo_repo в bar, так и наоборот.
Исходная настройка не так уж плоха. Из каталога foo/
я использую:
git subtree --prefix=foo/ split -b export
Затем у меня есть новая ветвь в foo_repo только с содержимым каталога foo_repo/foo/
. Чтобы привести это в панель, я просто перехожу в каталог bar/
и:
git subtree --prefix=foo/ add ../foo_repo/.git export
Теперь, когда я настроен, я хотел бы сделать некоторую разработку кода и сохранить foo/
в актуальном состоянии в обоих репозиториях. Нажав из бара, я думаю, что понял. В каталоге bar/
:
touch foo/more_code.py
git add foo/more_code.py
git commit -m "more code"
git subtree --prefix=foo/ push ../foo_repo/.git export
Затем из каталога foo_repo/
:
git checkout master
git subtree --prefix=foo/ merge export
Слияние другого пути - это то место, где я застрял. Из foo_repo/
:
git checkout master
touch foo/yet_more_code.py
git add foo/yet_more_code.py
git commit -m "yet more code"
???
Где ???
- это команда, которая объединяет каталог foo/
с ветвью export
. Тогда из bar/
:
git subtree --prefix=foo/ pull ../foo_repo/.git export
Поэтому я в основном ищу линию, которая находится в месте ???
, или другой рабочий процесс, который делает то же самое. Я попытался повторить git subtree --prefix=foo/ split -b export_foo
тем, что не работает.