Una recente modifica di Git ha cambiato il modo in cui viene gestita la directory .git
quando si utilizzano i sottomoduli. Invece di avere uno .git
per sottomodulo, tutto è ora nella directory "root level" .git
(quella corrispondente alla copia di lavoro inclusi i sottomoduli).Spostamento di una copia di lavoro di git contenente sottomoduli
Quindi, in ogni sottomodulo, viene creato un file che punta alla nuova posizione della directory .git
.
In my project, ho il .gitmodules
del file seguente:
[submodule "tests/shared-tests"]
path = tests/shared-tests
url = git://github.com/roboptim/roboptim-shared-tests.git
[submodule "cmake"]
path = cmake
url = git://github.com/jrl-umi3218/jrl-cmakemodules.git
Quando faccio git clone --recursive
, ho quindi ottenere:
$ cat cmake/.git
gitdir: /home/moulard/profiles/default-x86_64-linux-ubuntu-12.04.1/src/unstable/roboptim/roboptim-core/.git/modules/cmake
Attualmente sto usando Git 1.8.1.5.
Le mie domande sono:
- Perché ha fatto questo cambiamento di comportamento? Non vedo alcun guadagno ovvio a questa nuova strategia.
- Come posso quindi spostare in modo sicuro una copia di lavoro? (Se sposto la mia copia di lavoro, ricevo un messaggio di errore che mi dice che il percorso del gitdir rotta non è più un repository Git)
Si prega di notare che questa non è la stessa della domanda precedente Moving the parent directory of a git repository that contains submodules nel Sento che sono sicuro questo non è un problema correlato alla presenza di un percorso assoluto nel mio file .gitmodules
.
Se tutto fallisce, allora forse http://stackoverflow.com/a/15504813/6309? – VonC
in realtà ho provato con l'ultima versione di Git e l'HEAD di master ma finora non ho avuto fortuna a meno che non ci sia un comando git di cui non sono a conoscenza ... –
@ThomasMoulard è il più recente 1.8.3 nel tuo caso? – VonC