Jump to content

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


Mgbu
 Share

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"

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...