Para crear la cuenta se necesita un correo electrónico y un nombre de usuario, despues presionas en la esquina superior derecha el <**Registro**> e ingresas tu correo de registro, nombre de usuario <**Nombre**> y contraseña **<Contraseña>**.
De esta forma tendras tu propia cuenta dentro de la plataforma git de DCF y clonar los repositorios de la Fundacion para contribuir.
1.- Crear un Issue en [git DCF](https://git.decentralizedclimate.org/DecentralizedClimateFoundation/docs) con un titulo breve sobre el tema <**Titulo brevemente**> , nombre del estudiante. <**Nombre del Estudiante**> y una descripción <**Descripción**> mas detallada sobre el caso o mejora que se desea realizar.
2.- Hacer un Fork del repositorio [docs](https://git.decentralizedclimate.org/DecentralizedClimateFoundation/docs) del git de DCF, el cual podemos realizar al clickear el boton en la parte superior derecha donde dice Fork, ahi podemos cambiarle el titulo (Se recomienda mantenerlo y solo aceptar el fork a nuestro repositorio).
Se debe tener un acceso a VPN y pedir una Shell Contacte al [Sysadmin](mailto:david@decentralizedclimate.org) se sugiere el uso de [OpenVPN Connect](https://openvpn.net/client/client-connect-vpn-for-windows/), para el uso de la Shell que se envie, tambien se sugiere el uso de [MobaXterm](https://mobaxterm.mobatek.net/)
Despues de tener todo lo necesario, se siguen los pasos siguientes:
1.- Se conecta a la VPN ingresando el archivo ssh a sesiones existentes dentro de OpenVPN y despues ingresa la contraseña proporcinada por el Sysadmin.
2.- Se ejecuta MobaXterm y se siguen los siguientes comandos:
```shell
$ ssh pagano@10.162.235.52 #Se conecta uno a la VPN con el usuario que le proporcione el Sysadmin (el cual le pedira un usuario y una contraseña)
$ su [team numero] #Aqui se usara el team al que seas unido ejemplo si eres del team 2 deberas ingresar su team2
$ tmux a-t 0 # Si existe la sesion 0 que se creo previamente por otro usuario utilizar el comando de tmux a -t 0
```
>**Sugerencias:**
>**Si existe la sesion 0 que se creo previamente por otro usuario utilizar el comando de tmux a -t 0**
>**tmux ls - Lista sesiones activas de tmux**
>**Si estas dentro de tmux para salir utiliza Ctrl+b despues apretar d para no cerrar la sesion de todo.**
Entramos al proyecto git clonado en la maquina y vamos al archivo correspondiente en la ruta: docs/posts/socialserv/
```shell
$ cd docs
```
4.- Abrimos el Feature a partir de la la rama develop
para esto debemos pasarnos a la rama develop con el comando:
```shell
$ git checkout develop
$ $ git flow feature start MYFEATURE (MYFEATURE se cambia por el nombre que quieras identificarlo).
```
Entramos al archivo correspondiente:
```shell
$ cd _posts/socialserv/
```
Se editara el documento (en este ejemplo 2023-02-22-GitES.md) poniendo el comando del editor vim (**para el ejemplo seria: vim 2023-02-22-GitES.md**) pulsando `i` y empezamos a editar el documento.
>Se adjunta un Cheat Sheet de vim para guiarte y editar de forma correcta y eficiente el archivo en vim.
```shell
# Cheat Sheet de Comandos Básicos de Vim
Modo Normal:
-`i` - Cambiar al modo de inserción.
-`x` - Eliminar el carácter actual.
-`dd` - Eliminar la línea actual.
-`yy` - Copiar la línea actual.
-`p` - Pegar el contenido copiado o eliminado después de la línea actual.
-`u` - Deshacer la última acción.
-`Ctrl + r` - Rehacer la última acción deshecha.
-`:w` - Guardar el archivo.
-`:q` - Salir de Vim.
-`:q!` - Salir de Vim sin guardar cambios.
Modo de Inserción:
-`Esc` - Cambiar al modo normal.
Modo de Comando:
-`:set number` - Mostrar números de línea.
-`:set nonumber` - Ocultar números de línea.
-`:set tabstop=4` - Establecer el tamaño de la pestaña en 4 espacios.
-`:set expandtab` - Utilizar espacios en lugar de tabulaciones.
-`:set autoindent` - Habilitar la indentación automática.
-`:set syntax=python` - Establecer la sintaxis resaltada para Python (sustituir "python" por el lenguaje correspondiente).
-`:help <comando>` - Mostrar la ayuda sobre el comando especificado.
```
Puedes agregar, editar o mejorar el documento asi como estudiar el cheetsheet de gitflow y de gitlab.
>Puedes tener una terminal abierta en **tmux** asi tendremos corriendo el servidor mientras editamos, esto se realizaria con bundle.
> Verifica que bindle este instalado con el comando siguiente: **bundle --version**
Si no esta instalado puede seguir estos pasos:
```shell
gem install bundler
```
Lo corremos para visualizar los cambios en el conteneder de la VPN http://ip:puerto
> Ejemplo: http://10.162.235.52:4000/
Luego que todo podemos agregar los cambios cerrando el documento con Ctrl + x y despues con el comando:
```shell
$ git add .
```
> Antes de agregar algo, recuerda estar en la raiz del proyecto git en este caso **docs**
Con esto agregamos el archivo o archivos modificados al area de preparacion.
Despues debemos crear el commit con los cambios agregados.
Después de ejecutar git add ., puedes crear un commit utilizando el comando git commit -m "mensaje del commit". Al hacerlo, se crea un nuevo commit que contiene los cambios registrados en el área de preparación. El mensaje del commit proporcionado después del parámetro -m describe los cambios realizados en el commit.
```shell
$ git commit -m "Mensaje"
```
> Aclara que se modifico, agrego o mejoro en el commit brevemente pero conciso.
5.- Al terminar el Feature debemos hacer el push con referencia.
```shell
git push origin feature
```
Esto enviará los cambios de la rama **feature** al repositorio remoto llamado **origin**. Asegúrate de reemplazar "feature" con el nombre de tu rama.
Terminamos el Feature hacia la rama develop (la rama de donde partio todo).
Por buena practica se recomienda hacer primero un pull y despues nuestro respectivo push.
```sh
$ git flow feature pull origin MYFEATURE #MYFEATURE se reemplaza por el nombre que le pusiste al feature.
Verifica que si se hizo el git push en tu repositorio forkeado en la pagina de git. Debes ingresar a tu repositorio y ver que el push fue agregado de forma correcta.
(Esto lo encontraras en tu repositorio, en la pestaña superior izquierda e ingresar en la respectiva dependiendo la rama de la que se trate).
6.1.- Se debe ingresar a la rama con la que se hara el pull requests (Esto lo podras realizar ingresando como se comento anteriormente en la pestaña superior izquierda).
6.2.- Despues en la pestaña de donde dice Pull Requests clickeamos y nos aparecera un boton verde donde dice crear "Crear Pull Request" le damos click.
6.3.- Nos saldran las dos ramas que se desean fusionar: Primero debemos ingresar la rama a la que se quiere hacer el pull en este caso la rama develop de DCF y despues se ingresa la rama de nuestro repositorio en este caso podriamos tomar la rama develop de nuestro propio repositorio.
6.4.- Nos pedira los datos para crearlo como un breve titulo de lo que se mejora, agrega o edita, tambien una descripcion donde podemos detallar lo que se hizo (podemos ver como va quedando el pull request con la opcion de "Vista Previa").
Terminando de agregar los datos respectivos, se hace el pull requests agregando que issue se resuelve agregando por ejemplo: