Supprimer un submodule git

Si comme moi vous souhaitez faire évoluer un sous-projet ( plugin WordPress, etc ) depuis votre projet en cours, vous avez probablement utilisé les submodules git.

Au moment de faire la passation du projet, le client peut souhaiter tracker ces dépendances pour être indépendant de votre repository parent, ou tout simplement vous utilisez un repository privé dont vous allez retirer les droits.

Pour supprimer un submodule, j’utilise cette fonction, collée par exemple dans votre dotfiles ou votre .bash_profile :

function gitrmsubmodule () {
if [[ "${1: -1}" == '/' ]];then
echo "- Submodule path should not end with a '/'.";
return 0;
fi;
if [[ -z "${1}" ]]; then
echo "- Missing argument ! You should specify a submodule folder.";
return 0;
fi;
if [[ ! -d "${1}" ]]; then
echo "- The module ${1} does not exists";
return 0;
fi;
git config -f .gitmodules --remove-section submodule.${1};
git config -f .git/config --remove-section submodule.${1};
git add .gitmodules;
git rm --cached ${1};
rm -rf .git/modules/${1};
git commit -m "Git - Remove submodule ${1}";
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Il vous suffit ensuite de trouver le chemin du submodule présent dans votre fichier .gitmodules. Exemple :

[submodule "wp-content/plugins/wpusimplepwa"]
path = wp-content/plugins/wpusimplepwa
url = https://github.com/WordPressUtilities/wpusimplepwa.git
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Ensuite, plus qu’à appeler la fonction depuis la racine du thème, avec le chemin sans slash ( / ) à la fin.

gitrmsubmodule wp-content/plugins/wpusimplepwa;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Le submodule sera retiré de votre projet, un commit contenant la suppression du submodule sera généré, et il vous restera les fichiers contenus, prêts à être commités à nouveau si besoin.

Partager cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *