Ir al contenido
Mgbu

gitteador.sh, Para hacer commits un poco más rápido

Recommended Posts

Yo uso Git para soncronizar mis documentos entre mis PCs.

El problema que estaba teniendo es que a veces me olvidaba de sincronizar antes de apagar la PC, entonces hice un script que ejecuto justo antes de que se apague el equipo.

El script no hace nada solo, va preguntando que hacer.

 

Por si alguien le sirve lo pongo aca, uno puede agregarle todos los repositorios que uno quiera. Va pasando uno por uno, lo que hace es:

 

  • Si hay modificaciones sin guardar
    • Uno puede pedir que el script agregue, haga commit, pull y push solo. Lo único que hace falta hacer es poner el nombre del commit
    • Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script
    • Sino se puede saltear y no hacer nada
  • Si no hay modificaciones pero hay commits para pushear
    • Uno puede pedir que el script haga pull y push solo
    • Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script
    • Sino se puede saltear y no hacer nada
  • Si no hay nada que hacer en este repositorio
    • Uno puede pedir que el script haga pull solo
    • Sino uno puede pedir una shell para hacer cosas manualmente, y con "exit" volver al script
    • Sino se puede saltear y no hacer nada

El script es este, al final hay que poner los paths a los repositorios:

 

 

#!/bin/bash

gittear () {

    cd $1

    git status

    # Ver si hay cambios
    if [[ $(git status --porcelain) ]]; then

        echo "-------------"
        echo "Hay cambios"
        echo

        opciones=("Hacer un commit de todo, pull y push"
                  "Hacer cosas manualmente"
                  "No hacer nada y continuar con el siguiente repositorio"
                  "No hacer nada y salir de todo")
        select o in "${opciones[@]}"
        do
            case $o in
                "Hacer un commit de todo, pull y push")
                    
                    echo "Agregando todo al stage..."
                    git add -A

                    echo "Ingrese nombre del commit"
                    read mensaje

                    echo "Haciendo commit..."
                    git commit -m "$mensaje"

                    echo "Haciendo pull..."
                    git pull

                    echo "Haciendo push..."
                    git push

                    break
                    ;;
                "Hacer cosas manualmente")
                    echo "Elegiste hacer las cosas manualmente"
                    sh
                    echo "Fin"
                    break
                    ;;
                "No hacer nada y continuar con el siguiente repositorio")
                    break
                    ;;
                "No hacer nada y salir de todo")
                    exit 1
                    break
                    ;;
                *) echo "Opcion invalida";;
            esac
        done

    #Si no hay cambios pero hay commits para pushear              
    #git log --oneline origin/master..HEAD  (devuelve algo si hay commits)
    elif [[ $(git log --oneline origin/master..HEAD) ]]; then

        echo "-------------"
        echo "No hay cambios pero hay commits para pushear"
        echo

        opciones=("Hacer pull y push"
                  "Hacer cosas manualmente"
                  "No hacer nada y continuar con el siguiente repositorio"
                  "No hacer nada y salir de todo")
        select o in "${opciones[@]}"
        do
            case $o in
                "Hacer pull y push")
                    
                    echo "Haciendo pull..."
                    git pull

                    echo "Haciendo push..."
                    git push

                    break
                    ;;
                "Hacer cosas manualmente")
                    echo "Elegiste hacer las cosas manualmente"
                    sh
                    echo "Fin"
                    break
                    ;;
                "No hacer nada y continuar con el siguiente repositorio")
                    break
                    ;;
                "No hacer nada y salir de todo")
                    exit 1
                    break
                    ;;
                *) echo "Opcion invalida";;
            esac
        done

    # No hay cambios ni cosas para pushear
    else

        echo "-------------"
        echo "No hay cambios"

        opciones=("Hacer pull"
                  "Hacer cosas manualmente"
                  "No hacer nada y continuar con el siguiente repositorio"
                  "No hacer nada y salir de todo")
        select o in "${opciones[@]}"
        do
            case $o in
                "Hacer pull")
                    
                    echo "Haciendo pull..."
                    git pull

                    break
                    ;;
                "Hacer cosas manualmente")
                    echo "Elegiste hacer las cosas manualmente"
                    sh
                    echo "Fin"
                    break
                    ;;
                "No hacer nada y continuar con el siguiente repositorio")
                    break
                    ;;
                "No hacer nada y salir de todo")
                    exit 1
                    break
                    ;;
                *) echo "Opcion invalida";;
            esac
        done
    fi

}

clear

gittear "/home/path/a/mi/repo"

clear

gittear "/home/path/a/mi/otro/repo"

 

 

Compartir este post


Enlace al post
Compartir en otros sitios

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invitado
Responder en este tema...

×   Has incluido contenido con formato.   Eliminar formato

  Sólo se permiten 75 emoticonos como máximo.

×   Tu enlace ha sido insertado automáticamente.   Deshacer y mostrar como enlace

×   Su contenido anterior ha sido restaurado.   Limpiar editor

×   No puedes pegar imágenes directamente. Súbelas a algún hosting de imágenes y pega la dirección URL


×
×
  • Crear Nuevo...