Как пакет git должен работать с подмодулями?

Я использую пакет git для резервного копирования репозиториев git. В последних версиях git метаданные репозитория подмодуля хранятся в.git/modules родительского репозитория, в отличие от того, как раньше они хранились в каталоге.git прямо в подмодуле.

Когда пакет git -запускается в подмодуле, он создает пакет родительского репо, опуская подмодули.

Кто может пролить свет на это?
Как я могу сделать пакет git из подмодуля?

ссылка: вопрос в списке рассылки git

редактировать:

Прочитав, что для sschuberth это работает, я написал скрипт для тестирования и могу убедиться, что он работает. У меня есть сценарий резервного копирования, который основан на проверке существования каталога.git , чтобы узнать, находится ли он в каталоге верхнего уровня репозитория, и поэтому он сломался, когда подмодули начали использовать.git . файлы . Если кто-нибудь знает, какой рекомендуемый способ гарантировать, что вы находитесь в папке верхнего уровня репозитория, мне интересно. Я не знаю, как я пропустил это.

На всякий случай это может заинтересовать кого-то, кто должен писать тестовые сценарии для подмодулей, это сценарий, который я использовал:

#!/bin/bash

git --version

mkdir super
mkdir subRemote

touch super/superFile.txt
touch subRemote/subFile.txt

cd super

   git init
   git add --all
   git commit -am"Initial commit"

cd..


cd subRemote

   git init
   git add --all
   git commit -am"Initial commit"

cd..


cd super

   git submodule add../subRemote/.git
   git add --all
   git commit -am"added submodule"
   git submodule update
   echo -e "\ngit log in super:"
   git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative --all


   cd subRemote

      echo -e "\ngit bundle:"
      git bundle create../../submoduleBundle --all --remotes

   cd..

cd..


git clone --mirror submoduleBundle bundledSub/.git

cd bundledSub

   git config core.bare false
   git config core.logallrefupdates true
   git remote rm origin
   git checkout

cd..


#------------------------------------------------

cd super

   echo -e "\nfiles in super":
   ls -alh

cd..


cd super/subRemote

   echo -e "\nfiles in super/subRemote":
   ls -alh

cd../..


cd bundledSub

   echo -e "\nfiles in bundledSub":
   ls -alh

cd..

8
задан 0x1gene 24 September 2013 в 16:02
поделиться