git

Dans une entreprise, ça bouge beaucoup, et en général, le code suit le mouvement…

Si vous voulez migrer du code d’un serveur git à un autre, alors il y a une méthode toute simple : utiliser le script ci-dessous.

Comment ça fonctionne

C’est tout simple, il suffit de copier / coller le script dans un fichier et de le lancer en ligne de commande.

Il faudra toutefois, avant les réjouissances, paramétrer quelques variables d’environnement, en tapant simplement (et par exemple) :

Cela migrera :

Et voilà ! Un grand merci à Cédrik de Digitas pour son temps, et sa geekitude.

#!/bin/sh
 
#
# Migrates s from one remote git repository server to another.
# Please note the new repository (bare) must already exist on the new git server.
# 
# This script is straight forward: it clones the old repository,
# fetches all branches and pushes them afterwards to the new repository (including tags).
#
 
#GIT_SERVER_FROM=${GIT_SERVER_FROM:-https://github.cedrik.fr/}
GIT_SERVER_FROM=${GIT_SERVER_FROM:[email protected]:}
#GIT_SERVER_TO=${GIT_SERVER_TO:-https://gitlab.cedrik.fr/}
GIT_SERVER_TO=${GIT_SERVER_TO:[email protected]:}
REPO_PREFIX=${REPO_PREFIX:-myproject/}
REPOS=${REPOS:-core layout web}
 
#TMP_DIR=`mktemp -d -t git_migration.XXXXX` || exit 1
TMP_DIR=`mktemp -d git_migration.XXXXX` || exit 1
 
pushd $TMP_DIR
 
echo "====  Migrating from  $GIT_SERVER_FROM$REPO_PREFIX  to  $GIT_SERVER_TO$REPO_PREFIX  ===="
 
for r in $REPOS ; do
 
 repo_name=`basename $REPO_PREFIX$r`
 
echo "==== ${repo_name} ===="
 
#git clone --no-checkout $GIT_SERVER_FROM$REPO_PREFIX$r.git
git clone --mirror $GIT_SERVER_FROM$REPO_PREFIX$r.git
 
cd ${repo_name}.git
 
git remote set-url origin $GIT_SERVER_TO$REPO_PREFIX$r.git
git push --mirror -u origin
 
cd .. && rm -rf ${repo_name}.git
 
done
 
cd .. && rmdir $TMP_DIR
popd

[Ce script a été vu pour la première fois sur TechRevolutions.fr]

Vous aimez cet article ? Partagez le.

By TechRevolutions| No Comment | Outil
1