Saltar al contenido

Migrar repositorios entre instancias de Gitlab

Posteriormente a consultar expertos en esta materia, programadores de diversas áreas y profesores dimos con la respuesta al problema y la compartimos en este post.

Solución:

Recientemente migré de gitolite a gitlab y la tarea oficial de rake gitlab:import:repos trabajó para mi. Estoy usando gitlab 6.1.0 (82f3446). Aquí esta lo que hice:

  • rsync repositorios desnudos de gitolita a repositories/group/. Asegúrese de reemplazar repository con el nombre del repositorio gitolite y cambie el nombre de host de su servidor gitlab.

    rsync -rth --progress repositories/repository.git 
    [email protected]:/home/git/repositories/group/
    

    Aquí, group es el nombre del grupo de usuarios al que desea agregar el repositorio. Si no tienes ningún grupo específico, elige root como el nombre del grupo.

  • Corregir permisos: solo es necesario cuando el rsync el usuario no es git:

    sudo chown -R git:git repositories/group/
    
  • cd ~/gitlab

  • Ejecute la tarea de rake para importar todos los repositorios nuevos:

    bundle exec rake gitlab:import:repos RAILS_ENV=production
    

Ahora, si inicia sesión como administrador, encontrará el nuevo proyecto agregado.

Para obtener más información, consulte “Importar repositorios básicos a la instancia del proyecto GitLab” en http://your-gitlab-server/help/raketasks.

En su caso, puede iniciar sesión en su antiguo sistema TKL y sincronizar todos los repositorios desnudos con la nueva instancia, seguido de una importación.

Una opción sería:

  1. Clone el antiguo repositorio de gitlab en una máquina de desarrollo.
  2. Cree un repositorio en blanco en el nuevo gitlab.
  3. Agregue el nuevo repositorio como un control remoto en la máquina de desarrollo.
  4. Empuje todo de vuelta al nuevo repositorio.
  5. Elimine el repositorio antiguo de la lista de repositorios remotos.

Para crear un control remoto llamado newRepo, haz lo siguiente: git remote add newRepo gitlab.localhost.com:User/newRepo.git (reemplace la URL al final con la de su repositorio)

Lo hice prácticamente de la siguiente manera después de leer la respuesta de ChrisA, lo que me dio un pequeño dolor de cabeza sobre cómo hacerlo de manera práctica. El ejemplo copia un repositorio de github a gitlab, para que el origen y el destino sean un poco más claros.

  1. Clone el antiguo repositorio de github en una máquina de desarrollo (lo que crea un repositorio simple):

    $ git clone --mirror [email protected]:me/myrepo.git
    
  2. Cree un repositorio en blanco en el nuevo gitlab.

  3. Agregue el nuevo repositorio como un control remoto en la máquina de desarrollo.

    $ cd myrepo.git
    $ git remote add newRepo [email protected]:me/myrepo.git
    
  4. Empuje todo de vuelta al nuevo repositorio.

    $ git push --mirror newRepo
    

Eso es todo.

De esta forma copió todas las sucursales y etiquetas al nuevo destino.

Ahora puede eliminar el repositorio simple clonado de su máquina de desarrollo.

Si conservas algún titubeo y disposición de reformar nuestro enunciado puedes escribir una referencia y con mucho gusto lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *