Como renomear um git repo (projeto) que contém submódulos em seus subdiretórios

Eu nunca esperava renomear um repositório git, que, mais especificamente, é a pasta de nível superior que detém o projeto, seria tão difícil. Sim, o projeto contém alguns submódulos, mas é opasta de nível superior que precisa ser renomeado, não opasta submodule. Git, ao que parece, grava algum estranhocaminhos absolutos nos seus mecanismos de submódulo.

Vamos supor que

Todos os seus projetos localizam em/tmp.Você tem umproj_master eproj_mod.Você cloneporj_master Comoproj_ALL então cloneprom_mod como um submódulo nele.Você renomeiaproj_ALL paraproj_onebillion. Então a magia negra acontece.

As etapas a seguir irão reproduzir o problema que mencionei. A versão do git que eu uso é:

$ git --version
git version 1.7.9.5

Inicializarproj_master.

$ cd /tmp
$ mkdir proj_master; cd proj_master
$ git init .
$ touch README
$ git add .; git commit -m "hello proj_master"

Inicializarproj_mod.

$ cd /tmp
$ mkdir proj_mod; cd proj_mod
$ git init .
$ touch README
$ git add .; git commit -m "hello proj_mod"

Cloneproj_master Comoproj_ALL e cloneproj_mod como um submódulo.

$ cd /tmp
$ git clone proj_master proj_ALL
$ cd proj_ALL
$ git submodule add /tmp/proj_mod ./mod
$ git add .; git commit -m "hello proj_ALL"
$ git status   % Everything is OK.

Renomearproj_ALL paraproj_onebillion. Encontre um erro fatal.

$ cd /tmp
$ mv proj_ALL proj_onebillion
$ cd proj_onebillion
$ git status
fatal: Not a git repository: /tmp/proj_ALL/.git/modules/mod

Uma coisa a notar é a.git arquivo no diretório do sub-módulo.

$ cat /tmp/proj_ALL/mod/.git 
gitdir: /tmp/proj_ALL/.git/modules/mod

Sim, um caminho absoluto. Pela primeira vez, percebo que o git está ciente de algo fora do escopo da pasta de repo de nível superior.

É isso aí. Repito que mais uma vez eu renomeio a pasta do projeto de nível superior, não a pasta do submódulo. eu verificopergunta do schmuck, que tentou renomear a pasta submódulo, portanto, não parece tão útil para o meu problema.

Se eu sentir falta de algo que deveria ter sido lido antes, peço desculpas. Para todos os rapazes, qualquer conselho é bem-vindo.

questionAnswers(4)

yourAnswerToTheQuestion