Pour transférer un projet de SVN vers Gitlab, en conservant son historique ====== Membres du projet ====== Si vous avez plusieurs intervenants, il faut créer un fichier authors.txt de la forme : pnom = pnom On peut faire un script, et l’exécuter en étant dans le repository exporté de svn cmercier@cluster-head:~/fileas$ more aut_gen.sh authors=$(svn log | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq) for author in ${authors}; do echo "${author} = ${author%@*} <${author}>"; done Ca donne un fichier avec, par exemple cmercier = cmercier Si, au moment de l'export du dépôt SVN, vous tombez sur Author: eric not defined in authors.txt file ajoutez une ligne, eric = ebuchlin , et rm -rf tmp-dir, puis recommencer l'étape d'export Le fait de créer ce fichier sert juste pour l'historique des modifications. Il faudra ajouter les différents intervenants au projet git final. ====== Créez votre projet sur gitlab ====== https://git.ias.u-psud.fr/projects/new Lors de la création du projet, refusez la création du fichier //README.md//. ====== Export du projet SVN ====== Aller sur une machine avec une console shell, créer un répertoire temporaire, aller dedans mkdir tmp; cd tmp Dans ce répertoire, placez votre fichier //authors.txt// ===== Configurer les informations utilisateur pour git ===== (une seule fois si plusieurs projets sous le même login/machine) git config --global user.name "Prenom Nom" git config --global user.email "prenom.nom@ias.u-psud.fr" ===== Cloner le depot sous svn dans un depot local git ===== git svn [--authors-file=authors.txt] clone https://svn.ias.u-psud.fr/PROJETSVN tmp-git Si on vous répond que la commande svn n'existe pas, il faut installer le package **git-svn** de votre distribution ===== Renseigner le depot du nouveau projet (pnom, login IAS) ===== cd tmp-git git remote add origin https://git.ias.u-psud.fr/pnom/project_name_choisi_etape2.git Vérification: cmercier@localhost tmp-git]$ git remote show origin * distante origin URL de rapatriement : https://git.ias.u-psud.fr/cmercier/filaments.git URL push : https://git.ias.u-psud.fr/cmercier/filaments.git Branche HEAD : (inconnu) Si jamais vous avez quand même créé un fichier README.md [cmercier@localhost tmp-git]$ git remote show origin * distante origin URL de rapatriement : https://git.ias.u-psud.fr/cmercier/planck_save.git URL push : https://git.ias.u-psud.fr/cmercier/planck_save.git Branche HEAD : master Branche distante : master nouveau (le prochain rapatriement (fetch) stockera dans remotes/origin) Référence locale configurée pour 'git push' : master pousse vers master (le local n'est pas à jour) Branche distante : master nouveau (le prochain rapatriement (fetch) stockera dans remotes/origin) Référence locale configurée pour 'git push' : master pousse vers master (le local n'est pas à jour) Exécuter, pour se mettre à jour: git pull origin master --allow-unrelated-histories ===== Envoyez les fichiers de votre copie locale vers gitlab ===== git push -u origin master