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 Enterprise Server. 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 Enterprise Server, 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.