sábado, 1 de septiembre de 2018

Configurar dos cuentas de Gitlab en un mismo equipo: Fedora



Hace unos días en el trabajo estaba actualizando los repositorios de código en gitlab en mi laptop, y al llegar a casa y revisar mis códigos de proyectos personales, intenté actualizarlos, pero no funcionó. Resulta que por la configuración del correo de gitlab del trabajo, no era posible actualizar los repositorios, por lo tanto me fue necesario configurar ambas cuentas.

Ésta configuración la realicé en Fedora 28 x86_64 y utilizando zsh como interprete de comandos linux.

Paso 1:

Primero se deben generar las dos claves para los correos y obviamente darlas de alta en gitlab.com.

Para generar las claves, se utilizan el siguiente comando:

 ssh-keygen -t rsa -C "correo@personal.com" -b 4096
ssh-keygen -t rsa -C "correo@trabajo.com" -b 4096
Al generar las claves se crean dos archivos uno con la llave pública  (.pub)y otro con la llave privadas (rsa)

Para dar de alta una clave en gitlab, se accede al link https://gitlab.com/profile/keys

Paso 2:


Crear un archivo de config dentro la carpeta .ssh que está en la carpeta personal. Con la siguiente configuración:

En el archivo se agregan los dos correos que se utilizarán para la conexión.

Host gitlab.com-personal
 HostName gitlab.com
 User git
 IdentityFile ~/.ssh/rsa@cuenta.personal
 
Host gitlab.com-trabajo
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/rsa@cuenta.trabajo

Una vez agregado el archivo de configuración, se procede a realizar un prueba de conexión con el siguiente comando:

ssh -T git@gitlab.com-personal
ssh -T git@gitlab.com-trabajo

El mensaje que debe mostrar en caso de ser correcto, es el siguiente por cada cuenta configurada:

Welcome to GitLab, @Nombre-del-usuario-de-gitlab!

Paso 3:

Configurar cada repositorio para cada cuenta, los proyectos se pueden clonar de manera normal, pero para realizar una actualización, es necesario ir al proyecto, y buscar la carpeta .git y editar el archivo config de la siguiente manera:

Por ejemplo, el siguiente código es configuración para que se conecte con la cuenta de trabajo:

[core]
 repositoryformatversion = 0
 filemode = true
 bare = false
 logallrefupdates = true
[remote "origin"]
 url = git@gitlab.com-trabajo:nom_repo/nom_deb_v3.0.git
 fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
 remote = origin
 merge = refs/heads/master
[user]
 name = Nombre de Usuario
 email = cuenta@trabajo.com

Por ejemplo, el siguiente código es configuración para que se conecte con la cuenta de personal:

[core]
 repositoryformatversion = 0
 filemode = true
 bare = false
 logallrefupdates = true
[remote "origin"]
 url = git@gitlab.com-personal:nom_repo/nom_deb_v3.0.git
 fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
 remote = origin
 merge = refs/heads/master
[user]
 name = Nombre de Usuario
 email = cuenta@personal.com

Y con eso, se pueden hacer las actualizaciones de manera independiente de cada repositorio.

Si por ejemplo, se quiere clonar un proyecto con una cuenta en específica, se puede utilizar de la siguiente manera:

git@gitlab.com-personal:username1/test-project.git


Fuentes:

0 comments:

Publicar un comentario