Prérequis
Pour suivre ces étapes, vous devez utiliser un système macOS ou Linux et avoir les outils suivants installés :
- Mercurial
- Git
- Stockage Fichiers volumineux Git (Git LFS) (voir « Installation de Git Large File Storage »)
- Python, y compris le gestionnaire de package
pip
Importation d’un dépôt Mercurial
-
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 Mercurial est installé sur votre ordinateur, exécutez
hg --version
La sortie devrait ressembler à
Mercurial Distributed SCM (version 6.4)
. -
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 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)
. -
Pour vérifier que
pip
est installé sur votre ordinateur, exécutezpip --version
.La sortie devrait ressembler à
pip 21.2.4
. -
Pour installer le package
mercurial
Python, exécutezpip install mercurial
. -
Téléchargez la dernière version de fast-export sur votre ordinateur, puis extrayez l’archive.
-
Accédez au répertoire extrait, puis exécutez
./hg-fast-export.sh --help
.La sortie devrait commencer par
usage: hg-fast-export.sh
. -
Clonez votre dépôt Mercurial.
Par exemple, pour cloner le code source de Mercurial lui-même dans le répertoire
mercurial-repo
, exécutezhg clone https://www.mercurial-scm.org/repo/hg mercurial-repo
. -
Créez un répertoire, accédez-y, puis initialisez un nouveau dépôt Git.
Par exemple, si vous souhaitez nommer votre nouveau dépôt
mercurial-git
, exécutezmkdir mercurial-git && cd mercurial-git && git init
. -
Accédez au répertoire du dépôt Git nouvellement créé.
-
Pour configurer votre nouveau dépôt Git afin de gérer le cas des noms de fichiers de la même façon que Mercurial, exécutez
git config core.ignoreCase false
. -
Pour obtenir la liste des commiteurs dans votre projet Mercurial et stocker la liste dans
committers.txt
, exécutez le script suivant.Shell hg log --template "{author}\n" | sort | uniq > committers.txt
hg log --template "{author}\n" | sort | uniq > committers.txt
-
Mettez à jour votre fichier
committers.txt
, en mappant le nom du commiteur utilisé dans le dépôt Mercurial au nom que vous souhaitez utiliser dans votre dépôt Git, au format suivant :“The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
-
Dans votre dépôt Git initialisé, exécutez
hg-fast-export.sh
, en passant le chemin de votre dépôt Mercurial et le chemin de votre fichiercommitters.txt
en tant qu’arguments.Par exemple :
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main
. -
Une fois l’importation terminée, pour vérifier votre dépôt Git nouvellement créé, exécutez
git checkout HEAD
. -
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.