Pour transférer un projet de SVN vers Gitlab, en conservant son historique
Si vous avez plusieurs intervenants, il faut créer un fichier authors.txt de la forme : pnom = 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 <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 <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.
https://git.ias.u-psud.fr/projects/new
Lors de la création du projet, refusez la création du fichier README.md.
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
(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"
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
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
git push -u origin master