#!/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;