Skip to main content

Esta versión de GitHub Enterprise Server se discontinuó el 2024-03-26. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener rendimiento mejorado, seguridad mejorada y nuevas características, actualice a la versión más reciente de GitHub Enterprise Server. Para obtener ayuda con la actualización, póngase en contacto con el soporte técnico de GitHub Enterprise.

Importación de un repositorio de Mercurial

Puedes importar un repositorio desde Mercurial convirtiendo el repositorio a Git y, a continuación, insertando el repositorio de Git en GitHub Enterprise Server.

Requisitos previos

Para seguir estos pasos, debes usar un sistema macOS o Linux y tener instaladas las siguientes herramientas:

Importación de un repositorio de Mercurial

  1. Crea un repositorio en tu instancia de GitHub Enterprise Server. 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».

  2. Para confirmar que Mercurial está instalado en el equipo, ejecuta hg --version.

    La salida debe ser similar a Mercurial Distributed SCM (version 6.4).

  3. Para confirmar que Git está instalado en el equipo, ejecuta git --version..

    La salida debe ser similar a git version 2.40.0.

  4. 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).

  5. Para confirmar que pip está instalado en el equipo, ejecuta pip --version.

    La salida debe ser similar a pip 21.2.4.

  6. Para instalar el paquete de Python mercurial, ejecuta pip install mercurial.

  7. Descarga la última versión de fast-export a la máquina y extrae el archivo.

  8. 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.

  9. Clone el repositorio de Mercurial.

    Por ejemplo, para clonar el código fuente de Mercurial en el directorio mercurial-repo, ejecuta hg clone https://www.mercurial-scm.org/repo/hg mercurial-repo.

  10. 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, ejecuta mkdir mercurial-git && cd mercurial-git && git init.

  11. Accede al directorio del repositorio de Git recién creado.

  12. 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.

  13. 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
    
  14. 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>”
    
  15. 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 archivo committers.txt como argumentos.

    Por ejemplo, ../fast-export-221024/hg-fast-export.sh -r ../mercurial-repo -A ../mercurial-repo/committers.txt -M main.

  16. Una vez finalizada la importación, para consultar el repositorio de Git recién creado, ejecuta git checkout HEAD.

  17. Para agregar el repositorio GitHub como remoto, ejecuta git remote add origin URL y reemplaza URL por la dirección URL del repositorio GitHub que creó anteriormente, como https://github.com/octocat/example-repository.git.

  18. 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.