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.