Как переименовать репозиторий git (проект), который содержит подмодули в своих подкаталогах

Я никогда не ожидал, что переименовать репозиторий git, который, точнее, является папкой верхнего уровня, в которой хранится проект, будет так сложно. Да, проект содержит несколько подмодулей, но переименовывать нужно папку верхнего уровня, а не папку подмодуля. Похоже, Git записывает какие-то странные абсолютные путив своих механизмах подмодулей.

Предположим, что

  1. Все ваши проекты расположены в /tmp.
  2. У вас есть proj_masterи proj_mod.
  3. Вы клонируете porj_masterкак proj_ALL, а затем клонируете prom_modкак его подмодуль.
  4. Вы переименовываете proj_ALLв proj_onebillion. Затем происходит черная магия.

Следующие шаги воспроизведут проблему, о которой я упоминал. Версия git, которую я использую:

$ git --version
git version 1.7.9.5

  1. Initialize proj_master.

    $ cd /tmp
    $ mkdir proj_master; компакт-диск proj_master
    $ git инициировать.
    $ коснитесь README
    $ git добавить .; git commit -m "привет, proj_master"
    
  2. Инициализировать proj_mod.

    $ cd /tmp
    $ mkdir proj_mod; компакт-диск proj_mod
    $ git инициировать.
    $ коснитесь README
    $ git добавить .; git commit -m "привет proj_mod"
    
  3. Клонировать proj_masterкак proj_ALLи клонировать proj_modкак подмодуль.

     $ cd /tmp
    $ git клонировать proj_master proj_ALL
    $ cd proj_ALL
    Подмодуль $ git добавить /tmp/proj_mod ./mod
    $ git добавить .; git commit -m "привет proj_ALL"
    $ git статус % Все в порядке.
    
  4. Переименуйте proj_ALLв proj_onebillion. Столкнулись с фатальной ошибкой.

    $ cd /tmp
    $ mv proj_ALL proj_onebillion
    $ cd proj_onebillion
    $ гит статус
    фатальный: не репозиторий git: /tmp/proj_ALL/.git/modules/mod
    

Следует обратить внимание на файл .gitв каталоге подмодуля.

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

Да, абсолютный путь. Впервые я понимаю, что git знает о чем-то, что выходит за рамки папки репозитория верхнего уровня.

Вот именно. Повторяю еще раз, что я переименовываю папку проекта верхнего уровня, а не папку подмодуля. Я проверяю вопрос придурка , который пытался переименовать папку подмодуля, поэтому кажется, что это не так полезно для моей проблемы.

Если я пропущу что-то, что нужно было прочитать раньше, прошу прощения. Всем ребятам любой совет приветствуется.

19
задан Community 23 May 2017 в 12:18
поделиться