Prérequis
Pour suivre ces étapes, vous devez utiliser un système macOS ou Linux et avoir les outils suivants installés :
- Subversion
- Git, y compris
git-svn
- Stockage Fichiers volumineux Git (Git LFS) (voir « Installation de Git Large File Storage »)
Importation d’un dépôt Subversion
-
Créez un référentiel dans GitHub. Pour éviter les erreurs, n’initialisez pas le nouveau dépôt avec le fichier README, la licence ou les fichiers gitignore. Vous pouvez ajouter ces fichiers une fois que votre projet a été poussé vers GitHub. Pour plus d’informations, consultez « Création d’un dépôt ».
-
Pour vérifier que Git est installé sur votre ordinateur, exécutez
git --version.
La sortie devrait ressembler à
git version 2.40.0
. -
Pour vérifier que
git svn
est disponible sur votre ordinateur, exécutezgit svn --version
.La sortie devrait ressembler à
git-svn version 2.40.0 (svn 1.14.2)
.Si vous pouvez exécuter
git
correctement, mais que vous rencontrez une erreur lors de l’exécution degit svn
, vous devrez peut-être installergit svn
séparément. Nous vous recommandons d’utiliser Homebrew ou le registre de packages Ubuntu, lesquels incluent les packagesgit-svn
. -
Pour vérifier que Git LFS est installé sur votre ordinateur, exécutez
git lfs --version
.La sortie devrait ressembler à
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
. -
Extrayez votre dépôt Subversion.
Par exemple, pour extraire le projet open source Logisim de Sourceforge, exécutez
svn checkout https://svn.code.sf.net/p/circuit/code/trunk
. -
Accédez au répertoire de votre dépôt Subversion.
-
Pour obtenir la liste des auteurs dans votre projet Subversion et stocker la liste dans
authors.txt
, exécutez le script suivant :Shell svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2" = "$2 }' | sed 's/^[ \t]*//' | sort | uniq > authors.txt
-
Mettez à jour votre fichier
authors.txt
, en mappant le nom de l’auteur utilisé dans le dépôt Subversion au nom que vous souhaitez utiliser dans votre dépôt Git, au format suivant :octocat = The Octocat <octocat@github.com>
-
Pour convertir votre dépôt Subversion en dépôt Git, utilisez
git svn
.-
Si votre dépôt Subversion a un format standard, avec les dossiers « trunk », « branches » et « tags », exécutez
git svn clone -s URL PATH/TO/DESTINATION --authors-file PATH/TO/AUTHORS.TXT
, en remplaçantURL
par l’URL du dépôt Subversion,PATH/TO/DESTINATION
par le chemin du répertoire dans lequel vous souhaitez cloner le dépôt etPATH/TO/AUTHORS.TXT
par le chemin de votre fichierauthors.txt
.Par exemple, pour cloner le projet Logisim depuis Sourceforge dans un répertoire appelé logisim, exécutez
git svn clone -s https://svn.code.sf.net/p/circuit/code logisim --authors-file path/to/authors.txt
. -
Si votre dépôt Subversion n’est pas standard, vous pouvez personnaliser
git svn
pour gérer votre dépôt. Pour plus d’informations, consultez git-svn dans la documentation Git.
-
-
Git extrait chaque révision SVN et la transforme en commit Git. Si votre dépôt a de nombreux fichiers ou un long historique, ce processus prendra beaucoup de temps.
Pour les grands dépôts, la commande peut se bloquer. Si c’est le cas, vous pouvez reprendre là où vous vous êtes arrêté en mettant fin à la commande avec Ctrl+C, en vous déplaçant vers votre nouveau répertoire, puis en exécutant
git svn fetch
. -
Accédez au répertoire du dépôt Git nouvellement créé.
-
Pour ajouter votre dépôt GitHub en tant que dépôt distant, exécutez
git remote add origin URL
, en remplaçantURL
par l’URL du dépôt GitHub que vous avez créée précédemment, par exemplehttps://github.com/octocat/example-repository.git
. -
Pour envoyer le dépôt sur GitHub, exécutez
git push --mirror origin
.Si votre dépôt contient des fichiers dont la taille est supérieure à la limite de taille de fichier de GitHub, votre poussée peut échouer. Déplacez les gros fichiers vers Git LFS en exécutant
git lfs import
, puis réessayez.