Created
November 14, 2012 16:20
-
-
Save ratibus/4073080 to your computer and use it in GitHub Desktop.
Migration SVN -> Git
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Récupération des committers | |
$ svn log --xml svn_repository | grep author | sort -u | sed 's/.*>\(.*\)<.*/\1/g' | |
Mise en forme pour créer un fichier users.txt avec le format suivant : | |
schacon = Scott Chacon <[email protected]> | |
# On clone le dépôt SVN avec Git | |
$ git svn clone http://srv-tux1/svn/urgbox/site --authors-file=../authors.txt --no-metadata -s dpu | |
# migration des svn:ignore (à faire sur toutes les branches sur lesquelles on risque de travailler) | |
$ git svn show-ignore -i trunk > .gitignore | |
Puis on retravaille certaines lignes pour les mettre dans des fichiers dédiés | |
# On migre proprement les tags | |
$ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/ | |
$ rm -Rf .git/refs/remotes/tags | |
Pour éviter les ambiguités avec les noms de branches, renommer les tags en les préfixant par v (si besoin) | |
$ find .git/refs/tags/ -type f | sed 's#\.git/refs/tags/\(.*\)#mv .git/refs/tags/\1 .git/refs/tags/v\1#' | bash | |
# On migre les branches | |
$ cp -Rf .git/refs/remotes/* .git/refs/heads/ | |
$ rm -Rf .git/refs/remotes | |
# Gestion des répertoires vides (à faire sur tous les tags/branches avec lesquels on va bosser) | |
Récupérer les répertoires vides avec un export svn | |
Il va falloir ajouter un fichier .gitignore vide dans ces dossiers | |
$ find -type d -empty | sed 's#\(.*\)# mkdir -p \1; touch \1/.gitignore#' | |
Bien ajouter les fichiers avec un "git add -f" car des fichiers peuvent être ignorés avec des .gitignore ajoutés | |
# On ajoute le serveur de prod Git en remote | |
$ git remote add origin git@my-git-server:myrepository.git | |
# On push tous les éléments | |
$ git push origin --all | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment