Git: movendo submódulos recursivamente (submódulos aninhados)

Eu tenho a seguinte estrutura git

- git-repo a
-- subdirectory 2015
--- git-submodule b
-- git-submodule c
--- git-submodule d

Gostaria de mover o submódulo git c para a pasta 2015. Conheço "maneiras sujas" de fazer isso (que envolvem modificar .git / config e alterar o gitdir em vários arquivos nos arquivos .git / modules)

Li recentemente que o git mv deve ser capaz de fazer isso, ou seja, executando

git mv c 2015/

Isso funciona bem para repositórios nos quais não há submódulo aninhado (d no meu caso). No entanto, quando executo esse comando no meu diretório, estou recebendo erros como

fatal: Not a git repository: d/../../.git/modules/c/modules/d
fatal: 'git status --porcelain' failed in submodule 2015/c

(observe, esse erro ocorre no status git após a execução da movimentação mencionada acima)

Alguém está ciente de um método limpo para fazer essa mudança (ou seja, um método que não envolva a alteração manual de caminhos nos arquivos .git / modules)?

Edição: (6/10/2015)

Minha melhor solução atual que não envolve modificações em nenhum dos arquivos de configuração do git é (primeiro verifique se todas as alterações em d foram confirmadas e enviadas para algum lugar)

rm c/d -rf
git mv c 2015
cd 2015/c
git submodule update

Edição: (8/10/2015)

Uma solução alternativa ainda menos invasiva

git mv c 2015
rm 2015/c/d/.git
cd 2015/c
git submodule update

Edição: (21/9/2018)

Desde a versão 2.19 do git. Isso foi corrigido egit mv comporta-se como esperado.

questionAnswers(2)

yourAnswerToTheQuestion