#!/bin/bash # Script para extraer los ficheros del árbol oficial que se han parcheado. # También muestra los encargados de cada fichero. # # Ender para el proyecto NuLies. # Última actualización: 31 de Noviembre de 2001 # # Forma de utilización: "revisaparche [-v] parche.gz" # Opciones: -v más explícito (verbose) # # Por hacer: # - El parche podría ser .gz o .bz2. (¿quizás procesándolo antes con file?) # # Cambios: # revisaparche (1.4) # # - El parche ha de mirar no sólo en el directorio Documentation/, sino en # el resto, ya que ahora los config.in también se traducen. # # -- Ender sáb mar 31 01:16:03 CEST 2001 # # revisaparche (1.3) # # - Las palabras "ha cambiado" hacían las frases demasiado largas, y casi # todas ocupaban dos líneas. # # -- Ender vie nov 10 20:17:11 MET 2000 # # revisaparche (1.2) # # - Ahora el script es capaz de sacar la dirección del encargado del fichero # que se ha parcheado. Para ello he creado unos directorios llamados # MANTENEDORES justo por encima del directorio Documentation de cada árbol, # y que tienen de formato "nombredefichero:encargado " # # -- Ender vie nov 10 19:44:38 MET 2000 # # revisaparche (1.1) # # - Creación. # # -- Ender vie nov 10 18:07:41 MET 2000 if [ "$#" -eq 0 ] then echo "Forma de uso: `basename $0` [-v] parche.gz" >&2 echo "Opciones: -v más explícito (verbose)" >&2 exit 1 fi if [ "$1" = "-v" ] then PARCHE="$2" EXPLICITO=1 else PARCHE="$1" EXPLICITO=0 fi # ¿Existe el parche? if [ ! -r "$PARCHE" ] then echo "`basename $0`: no se puede leer $PARCHE." >&2 exit 1 fi # Fichero donde almacenamos los diferentes mantenedores. El formato que ha de # tener es: # nombredefichero:encargado # nombredefichero:encargado # ... MANTENEDORES="MANTENEDORES" # Lista de ficheros que hay en el parche. LISTA=`zcat $PARCHE|grep ^diff|awk -F " linux/" '{print $2}'` if [ "$EXPLICITO" -eq 1 ] then #echo $LISTA -- Esto no funciona bien, ya que "echo" se come los LF. zcat $PARCHE|grep ^diff|awk -F " linux/" '{print "Parche para " $2}' echo fi # Chequeo de seguridad if [ -z "$LISTA" ] then echo "Parche inválido. Por alguna razón no es un diff." exit 1 fi # Revisamos si tenemos esos ficheros en el repositorio. echo "Cambios en el repositorio" echo "=========================" for FICHERO in $LISTA do if [ -f "$FICHERO" ] then ENCARGADO=`grep $FICHERO $MANTENEDORES | cut -d: -f 2` if [ -z "$ENCARGADO" ] then ENCARGADO="Sin encargado" fi echo "$FICHERO -> $ENCARGADO." CAMBIOS=1 fi done if [ "$CAMBIOS" -ne 1 ] then echo "Sin cambios en el repositorio." fi