Primeiro, reescreva o histórico de bee
para mover todos os arquivos para o subdiretório :
cd /path/to/bee
git filter-branch -f --prune-empty --tree-filter '
dir="my fancy/target directory"
if [[ ! -e "$dir" ]]
then
mkdir -p "$dir"
git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir"
fi'
git log --stat
deve mostrar todos os arquivos exibidos em my fancy/target directory
. Agora você pode mesclar o histórico em aye
com facilidade :
cd /path/to/aye
git remote add -f bee /path/to/bee
git checkout -b bee-master bee/master
git rebase master
git checkout master
git rebase bee-master
Recrie o submódulo em aye
:
git submodule add git://my-submodule 'my fancy/target directory/my-submodule'
Por fim, você pode limpar aye
:
git rm 'my fancy/target directory/.gitmodules'
git branch -D bee-master
git remote remove bee
Você também pode ter que corrigir quaisquer caminhos absolutos em seu repositório (por exemplo, em .gitignore
)