Ir al contenido principal

Montar un repositorio con Git

Ayer me entró la curiosidad sobre cómo utilizar el gestor de control de versiones git. Ya tengo montado mi repositorio en una máquina remota y configurado para realizar los cambios desde mi equipo para luego subirlos a producción. Os comento cómo hacer esto.

Escenario:

- Servidor de producción [SERVIDOR]. En este servidor tenemos corriendo una aplicación en django (en la ruta /opt/proyecto/aplicacionA). Aquí también motaremos nuestro repositorio remoto. Tendremos que tener git instalado (desde paquetería o compilando).

- Equipo local [LOCAL]. Aquí es desde donde haremos los desarrollos, para posteriormente, subirlos a producción. Tendremos que tener git instalado (desde paquetería o compilando).


Lo que sigue a continuación serán los pasos al estilo receta, para más info de git, acudir al sitio http://git-scm.com/book/es/

1) Crear repositorio remoto

- Accedemos por ssh a SERVIDOR
- Creamos la ubicación del repositorio y lo iniciamos:

    [SERVIDOR] mkdir /opt/repo/aplicacionA.git
    [SERVIDOR] cd /opt/repo/aplicacionA.git
    [SERVIDOR] git init --bare


¡IMPORTANTE! El usuario que utilicemos para conectarnos por ssh al SERVIDOR debe tener permisos sobre /opt/repo/aplicacionA.git

- Configuramos nuestro proyecto de producción para indicar la ubicación del repositorio y hacer la carga de código:

    [SERVIDOR] cd /opt/proyecto/aplcacionA
    [SERIVDOR] git init
    [SERVIDOR] git remote add origin /opt/repo/aplicacionA.git
    [SERVIDOR] git add .
    [SERVIDOR] git commit -m 'Primera entrada de commit'
    [SERVIDOR] git push origin master


Hasta aquí ya tenemos en nuestro repositorio remoto el código del proyecto de producción.

2) Descargar el repositorio
 
- Ahora nos descargaremos el proyecto en LOCAL para poder trabajar con él:

    [LOCAL] mkdir /opt/desarrollo
    [LOCAL] cd /opt/desarrollo
    [LOCAL] git clone ssh://usuario@SERVIDOR//opt/repo/aplicacionA.git


Ya tenemos en local una copia del código de producción.

3) Realizar cambios

- Si queremos realizar un cambio en local y luego aplicarlo a producción (ejemplo, añadir un nuevo fichero):

    [LOCAL] cd /opt/desarrollo/aplicacionA   
    [LOCAL] touch README
    [LOCAL] git add README    #Indicamos que tenga en cuenta este fichero
    [LOCAL] git commit -m "Añadimos fichero README"    #Hacemos commit con un comentario
    [LOCAL] git push origin master    #Subimos el fichero al repositorio


- Ahora aplicaremos este cambio en producción:

    [SERVIDOR] cd /opt/proyecto/aplcacionA
    [SERVIDOR] git pull origin master    #Obtenemos la última versión del respositorio


- Si nos equivocamos mientras hacemos un cambio:

    [LOCAL] cd /opt/desarrollo/aplicacionA
    [LOCAL] git add README
    [LOCAL] echo "Prueba" > README    #Hacemos un cambio en README, pero nos arrepentimos y queremos volver al estado anterior
    [LOCAL] git reset README    #Le decimos que no tenga en cuenta este fichero para los cambios en el respositorio
    [LOCAL] git checkout -- README    #Volvemos a la versión del repositorio del último commit.


- Para recuperar archivos antiguos, remito a esta entrada:

http://www.alvaroremesal.net/blog-alvaroremesal/recuperar-archivos-antigos-con-git

4) Crear ramas

    git branch nueva_rama
    git branch -> nos muestra las distintas ramas existentes
    git checkout nueva_rama -> nos cambiamos a esta nueva rama



Espero que sea útil.

Comentarios

Entradas populares de este blog

Conexión a bbdd oracle desde python

Para poder acceder a una bbdd oracle desde python tan sólo necesitaremos tener instalado: - cliente oracle (lo puedes obtener de la página de oracle y registrándote en la misma) - extensión cx_Oracle (lo puedes descargar desde la página http://cx-oracle.sourceforge.net/) La forma de utilizarlo lo podemos ver en el siguiente ejemplo: Con este script se pretende actualizar el campo de una tabla pasándole tres argumentos, dos para filtrar el dato y uno que será el nuevo valor. También hacemos uso de optparse para pasear los argumentos. #!/usr/bin/python # -*- coding: iso-8859-15 -*- import cx_Oracle, sys, os, datetime from optparse import OptionParser conn_str='usuario/pass@host:port/bbdd' log = '/ruta/para/log/script.log' #Fucion para escribir log def log (texto):         now = datetime.datetime.now()         f = open(log_propio, 'a')         f.write(str (now.ctime()) + ' -> ' + texto + '\n')         f.close() #Se parsea

Curso Django Segunda Parte

Continuamos con la segunda parte del mini curso de django. Respecto a la primera parte, he añadido una par de cosas: - La instalación de un paquete más: python-pygraphviz - Y la aplicación de un parche para django-smart-selects: https://github.com/GrAndSE/django-smart-selects/commit/7e2a8d572b3615cc39a3c9f9d60e1b60de06f46f Pues bien, ya tenemos creado un proyecto llamado misitio. Ahora es el momento de crear nuestra aplicación, la cual llamaremos inventario. Para crear un aplicación, simplemente hacemos: cd /opt/djcode/misitio python manage.py startapp inventario Tras la ejecución de este comando (que no devuelve nada por pantalla), tendremos un nuevo directorio bajo el proyecto misitio: ls -l inventario/ -rw-r--r-- 1 root root   0 mar 11 12:27 __init__.py -rw-r--r-- 1 root root  57 mar 11 12:27 models.py -rw-r--r-- 1 root root 383 mar 11 12:27 tests.py -rw-r--r-- 1 root root  26 mar 11 12:27 views.py De los ficheros que nos podemos encontrar, tenemos:

Configurar Nano Wifi TL-WN725N en Raspberry pi

Hace poco me regalaron una raspberry pi, y junto con ella, un dongle wifi usb TP-LINK, modelo TL-WN725N. En principio se supone que no debe haber problemas de compatibilidad entre este dongle wifi y nuestra raspberry, pero si la versión de nuestro dongle wifi es la 2 (en la caja viene como Ver:2.0) la cosa cambia. En mi caso tenía instada la última versión de raspbian, la cual traía una versión de kernel superior a la 3.10.18. Esta versión de kernel es la que funciona con nuestra modelo de dongle wifi (al menos según he podido averiguar). De modo que para poder reconocer el dongle wifi, tendremos que bajar a esta versión del kernel: sudo rpi-update 8fd111f77895450323abc5b34efde19548ffc480 Tras reiniciar, tendremos el siguiente kernel: Linux raspberrypi 3.10.18+ #587 Ahora sólo nos queda instalar el driver: wget https://dl.dropboxusercontent.com/u/80256631/8188eu-20131110.tar.gz tar -zxvf 8188eu-20131110.tar.gz                                          cat README