Lorsque vous créez localement des sous-modules git comme sur ce script:Comment envoyer un dossier git submodule `.git` dans le dossier` .git/modules/`parent repository?
# Create the directory structure
mkdir main_repo
mkdir main_repo/unrelated_repo
mkdir main_repo/unrelated_repo/main_repo_submodule
cd main_repo
# Setup the unrelated_repo
cd unrelated_repo
printf "# UnRelated Repository\n\n" > README.md
git init
git add -f README.md
git commit -m "Added the unrelated repository first commit."
git remote add origin https://github.com/user/unrelated_repo
# Setup the main_repo_submodule
cd main_repo_submodule
printf "# Main Repository Submodule\n\nThis is a submodule from the \`main_repo\`, and not from the \`unrelated_repo\`\n" > README.md
git init
git add -f README.md
git commit -m "Added the main repository submodule first commit."
git remote add origin https://github.com/user/main_repo_submodule
# Setup the main_repo
cd ../..
printf "# Main Repo\n\nThis is the main repository which contains submodules\n" > README.md
printf "\nThis is a main_repo_file on the unrelated repository\n\n" > unrelated_repo/main_repo_file.txt
printf "\n*\n**\n\n" > unrelated_repo/.gitignore
git init
git add -f README.md unrelated_repo/main_repo_file.txt unrelated_repo/.gitignore
git submodule add -f -- https://github.com/user/main_repo_submodule "unrelated_repo/main_repo_submodule"
git commit -m "Added the first main repository first commit."
git remote add origin https://github.com/user/main_repo
Le sous-module dossier .git
sera situé sur le dossier:
main_repo/unrelated_repo/main_repo_submodule/.git/
Cependant, si je pousse cette sous-module à un serveur distant faire pour effectuer un:
git clone --recursive
Le dossier git sous-module main_repo/unrelated_repo/main_repo_submodule/.git/
sera situé sur:
main_repo/.git/modules/main_repo_submodule/
Et sur sa place sera un synlink dans son dossier git sur le référentiel parent. Alors, comment mettre un sous-module juste créer sur ce dossier dossier .git/modules/
, sans le cloner récursivement?
Cela est nécessaire car je souhaite conserver mon dossier sous-modules dans le dossier des modules parents, en conservant l'espace de travail propre, sans avoir à reclasser récursivement toutes les données chaque fois qu'un nouveau sous-module est ajouté.
Mise à jour
J'ai essayé de faire:
# Move the submodule to the parent repository
mkdir -p .git/modules
# shopt -s dotglob
mv unrelated_repo/main_repo_submodule/.git/ .git/modules
printf "gitdir: ../../.git/modules/main_repo_submodule\n" > unrelated_repo/main_repo_submodule/.git
Mais git dit le sous-module est introuvable.
Merci! J'ai oublié le dossier et je regarde, je pense qu'il est préférable de simplement changer la ligne d'envoi dans le bon dossier à la fois: 'mv unrelated_repo/main_repo_submodule/.git/.git/modules/main_repo_submodule'. – user