Я использую пакет 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..