Requisitos previos
Para seguir estos pasos, debes usar un sistema macOS o Linux y tener instaladas las siguientes herramientas:
- Mercurial
- Git
- Almacenamiento de archivos de gran tamaño de Git (Git LFS) (consulta "Instalar Git Large File Storage")
- Python, incluido el administrador de paquetes
pip
Importación de un repositorio de Mercurial
-
Cree un repositorio nuevo en GitHub. Para evitar errores, no inicialices el nuevo repositorio con el archivo LÉAME, la licencia o archivos gitignore. Puedes agregar estos archivos después de que tu proyecto se haya subido a GitHub. Para obtener más información, vea «Crear un repositorio nuevo».
-
Para confirmar que Mercurial está instalado en el equipo, ejecuta
hg --version
.La salida debe ser similar a
Mercurial Distributed SCM (version 6.4)
. -
Para confirmar que Git está instalado en el equipo, ejecuta
git --version.
.La salida debe ser similar a
git version 2.40.0
. -
Para confirmar que Git LFS está instalado en el equipo, ejecuta
git lfs --version
.La salida debe ser similar a
git-lfs/3.1.4 (GitHub; darwin arm64; go 1.18.1)
. -
Para confirmar que
pip
está instalado en el equipo, ejecutapip --version
.La salida debe ser similar a
pip 21.2.4
. -
Para instalar el paquete de Python
mercurial
, ejecutapip install mercurial
. -
Descarga la última versión de fast-export a la máquina y extrae el archivo.
-
Ve al directorio extraído y, a continuación, ejecuta
./hg-fast-export.sh --help
.La salida debe comenzar con
usage: hg-fast-export.sh
. -
Clone el repositorio de Mercurial.
Por ejemplo, para clonar el código fuente de Mercurial en el directorio
mercurial-repo
, ejecutahg clone https://www.mercurial-scm.org/repo/hg mercurial-repo
. -
Cree un directorio, ve al nuevo directorio y, a continuación, inicializa un repositorio de Git nuevo.
Por ejemplo, si deseas asignar un nombre al nuevo repositorio
mercurial-git
, ejecutamkdir mercurial-git && cd mercurial-git && git init
. -
Accede al directorio del repositorio de Git recién creado.
-
Para configurar el nuevo repositorio de Git para controlar el caso de los nombres de archivo de la misma manera que Mercurial, ejecuta
git config core.ignoreCase false
. -
Para obtener una lista de confirmadores del proyecto de Mercurial y almacenar la lista en
committers.txt
, ejecuta el siguiente script.Shell hg log --template "{author}\n" | sort | uniq > committers.txt
hg log --template "{author}\n" | sort | uniq > committers.txt
-
Actualiza el archivo
committers.txt
, asignando el nombre del confirmador usado en el repositorio de Mercurial al nombre que deseas usar en el repositorio de Git, con el siguiente formato:“The Octocat <octocato@gmail.com>”=”Octocat <octocat@github.com>”
-
En el repositorio de Git inicializado, ejecuta
hg-fast-export.sh
, pasando la ruta de acceso al repositorio de Mercurial y la ruta de acceso al archivocommitters.txt
como argumentos.Por ejemplo,
../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main
. -
Una vez finalizada la importación, para consultar el repositorio de Git recién creado, ejecuta
git checkout HEAD
. -
Para agregar el repositorio GitHub como remoto, ejecuta
git remote add origin URL
y reemplazaURL
por la dirección URL del repositorio GitHub que creó anteriormente, comohttps://github.com/octocat/example-repository.git
. -
Para insertar el repositorio en GitHub, ejecuta
git push --mirror origin
.Si el repositorio contiene archivos mayores que el tamaño de archivo de GitHub, es posible que se produzca un error en la inserción. Mueve los archivos grandes a Git LFS mediante la ejecución de
git lfs import
y vuelve a intentarlo.