commit 8bb8e7199897e86914628ef3245137da3e5aa482 Author: Thierry Florian Date: Fri Feb 14 15:46:34 2020 +0100 Initial commit. diff --git a/git-switch-http-to-ssh.sh b/git-switch-http-to-ssh.sh new file mode 100644 index 0000000..c3ecef4 --- /dev/null +++ b/git-switch-http-to-ssh.sh @@ -0,0 +1,45 @@ +#!/bin/bash +CMD='git remote -v' +INPUT_RGX='https?:\/\/((\w|\.)+)\/(.*)' +OUTPUT_RGX='git@\1:\3' + +ACCEPT_ALL_UPDATES=false + +for file in $(ls); +do + if [ -d $file ] + then + echo "Mise à jour du dépôt distant de '$file'" + cd $file + OLD_REMOTE=`$CMD | grep "(fetch)" | cut -d ' ' -f 1` + NEW_REMOTE=`echo $OLD_REMOTE | sed -En "s/$INPUT_RGX/$OUTPUT_RGX/p"` + + if [[ $OLD_REMOTE == *"http"* ]] + then + if [ $ACCEPT_ALL_UPDATES = false ] + then + echo "Voulez vous remplacer le dépôt suivant :" + echo " $OLD_REMOTE" + echo "par" + echo " $NEW_REMOTE ?" + echo "('y' pour ce dépôt, 'Y' pour ce dépôt et les suivants, 'n' ou autre valeur pour annuler)" + read accept + case $accept in + y);; + Y) ACCEPT_ALL_UPDATES=true;; + *) echo "Annulation..."; exit 0;; + esac + fi + + echo "Nouveau dépôt : $NEW_REMOTE" + + git remote rm origin + git remote add $NEW_REMOTE + else + echo "Le dépôt distant n'est pas en http(s), aucune conversion n'est possible." + fi + + cd - > /dev/null + echo '' + fi +done;