Script para Calcular el Porcentaje de Contribución en un Repositorio Git

Tiempo de lectura: 2 minutos

Introducción

En el desarrollo colaborativo de software, es esencial comprender la contribución de cada miembro del equipo. Este tutorial presenta un script de Bash que calcula el porcentaje de contribución de cada autor en un repositorio Git. Vamos a ver cómo utilizar esta herramienta para obtener información valiosa sobre el trabajo realizado por cada persona en un proyecto.

Requisitos Previos

Antes de comenzar, asegúrate de tener los siguientes requisitos en tu sistema:

  • Git instalado: Puedes descargarlo desde git-scm.com.
  • Acceso al repositorio Git que deseas analizar.

Paso 1: Crear el Script

Crea un nuevo fichero llamado contribucion.sh con este contenido:

#!/bin/bash

REPO_PATH=$(pwd)
DESDE_FECHA="2022-01-01"
HASTA_FECHA=$(date +"%Y-%m-%d")

# Obtener la lista de autores y la cantidad de líneas agregadas y eliminadas para cada uno
AUTHORS=$(git log --format='%aN' --since="$DESDE_FECHA" --until="$HASTA_FECHA" | sort -u)

echo "Estadísticas detalladas de contribución desde $DESDE_FECHA hasta $HASTA_FECHA en el repositorio $REPO_PATH:"

# Array para almacenar resumen
SUMMARY=()

# Calcular y mostrar el porcentaje para cada autor basado en líneas agregadas y eliminadas
for AUTHOR in $AUTHORS; do
    AUTHOR_LINES=$(git log --author="$AUTHOR" --since="$DESDE_FECHA" --until="$HASTA_FECHA" --pretty=tformat: --numstat | awk '{if ($1 != "" && $1 != "-") sum += $1; if ($2 != "" && $2 != "-") sum += $2} END {if (sum != "") print sum; else print 0}')
    TOTAL_LINES=$(git log --since="$DESDE_FECHA" --until="$HASTA_FECHA" --pretty=tformat: --numstat | awk '{if ($1 != "" && $1 != "-") sum += $1; if ($2 != "" && $2 != "-") sum += $2} END {if (sum != "") print sum; else print 0}')

    # Salida detallada
    echo "Detalles para $AUTHOR:"
    echo "   Líneas de $AUTHOR: $AUTHOR_LINES"
    echo "   Total de líneas: $TOTAL_LINES"

    # Verificar que el total de líneas no sea cero antes de realizar el cálculo
    if [[ "$TOTAL_LINES" -gt 0 ]]; then
        # Utilizar printf para formatear la salida con tres decimales
        PERCENTAGE=$(printf "%.3f" "$(echo "scale=4; ($AUTHOR_LINES / $TOTAL_LINES) * 100" | bc)")
        echo "   Porcentaje de contribución: $PERCENTAGE%"
        
        # Agregar al resumen
        SUMMARY+=("$AUTHOR: $PERCENTAGE%")
    else
        echo "   No hay contribuciones en el rango de fechas especificado."
        
        # Agregar al resumen con un porcentaje de 0%
        SUMMARY+=("$AUTHOR: 0%")
    fi
    echo "-------------------------"
done

# Resumen general
echo "Resumen general:"
for LINE in "${SUMMARY[@]}"; do
    echo "$LINE"
done

Paso 2: Configurar Permisos

Asegúrate de que el script tenga permisos de ejecución. Si el script se llama contribucion.sh, puedes establecer los permisos con el siguiente comando:

chmod +x contribucion.sh

Paso 3: Ejecutar el Script

Ejecuta el script desde la terminal. El script solicitará información sobre la fecha de inicio y calculará el porcentaje de contribución de cada autor en el rango de fechas especificado.

Recuerda que debes ejecutarlo en la carpeta dónde tengas tu proyecto git (con la carpeta .git)

./contribucion.sh

Paso 4: Personalización

Si deseas personalizar el rango de fechas u otras configuraciones, puedes editar las variables en el script, como DESDE_FECHA y HASTA_FECHA.

Conclusión

¡Ahora puedes tener una visión clara de la contribución de cada autor en tu repositorio Git! Este script es una herramienta útil para los equipos que desean comprender mejor cómo están contribuyendo individualmente al proyecto.

Deja un comentario