46 lines
1.3 KiB
Bash
46 lines
1.3 KiB
Bash
#!/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;
|