🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #8166

Re: CVS Returns: scripts parar detectar cambios

#8166
From: "Jesús M. NAVARRO"
Date: Mon, 23 Dec 2002 14:24
84 lines
4723 bytes
Hola, Count:

Count Zero wrote:
> Bueno, gracias a vosotros y un semanita practicando me empiezo a mover 
> agilmente en el mundo del CVS. Gracias a todos.
> 
> Ahora me he hecho un script para 'semi' automatizar la 'instalaci�n' de 
> nuevas versiones. Es decir: coger algo del repositorio y poner lo donde 
> tocar�a, como por ejemplo el repositorio de la p�gina web en el directorio 
> del servidor apache.
> 
> Lo que ara quiero hacer es hacer un script para que me avise via mail 
> cuando haya un nuevo "commit" o un nuevo "tag|rtag". 
> 
> Mirando la documentaci�n ya he visto que debe hacer uso del loginfo, 
> taginfo y tal, pero hay un peque�o problema.
> 
> Si yo meto un script en taginfo y se hace un 'cvs tag' se ejecuta ese 
> script para cada archivo que hay en el repositorio al que se le hace tag, y 
> yo quiero que se ejecute s�lo por cada repositorio afectado (es decir una 
> s�la vez).
> 

El procedimiento est�ndar estriba en el correcto uso de las expresiones 
regulares y un cierto manejo "ad hoc" de CVS.

Como ya has averiguado, dada la naturaleza de CVS, su "unidad de 
trabajo" es el fichero, y todas sus operaciones son "file oriented".

Yo ten�a hechos una serie de scripts para manejar las situaciones en las 
que te hayas ahora pero, desgraciadamente, se han perdido "en la noche 
de los tiempos".  No obstante, todos se basaban en los mismos principios:
1/ Tags con "contenido sem�ntico": antes o despu�s te encontrar�s con 
que cierta operaci�n, basada en tags tendr�a que tener excepciones, y no 
te gustar� tener que ir activando/desactivando tus scripts.  Utiliza las 
expresiones regulares *tambi�n* contra los tags (as�, deber� estar 
documentado que -por ejemplo, lo detalles concretos dependen de tu 
implementaci�n-, los tags en la forma 'v_lo_que_sea', corresponder�n a 
versiones que tienen que ir a producci�n, mientras que 'mn_lo_que_sea', 
son versiones internas de mantenimiento, y que cualquier otro tag ser� 
ignorado por los scripts).
2/ Operar *siempre* contra m�dulos completos: as�, si existe el m�dulo 
"sitio_web_1", todas las operaciones globales las llevar�s a cabo en 
este nivel y no en niveles interiores (`cvs tag sitio_web_1`, no `cvs 
tag sitio_web_1/fichero.txt`).  Esto permite, adem�s, el uso de un 
"fichero sabio" que te permitir� convertir operaciones "file oriented" 
en operaciones "module oriented" simplemente con realizarlas cuando el 
"fichero sabio" se vea afectado.

As�, veamos el caso pr�ctico de uso de taginfo:
El cuarto par�metro que se pasa al script es un "array" que contiene el 
nombre del fichero afectado y la revisi�n: si utilizas un "fichero 
sabio", te basta con que el script s�lo haga lo que tenga que hacer 
cuando el nombre del fichero coincida con el del "fichero sabio", 
teniendo en cuenta que la operaci�n "tag" (trata de evitar rtag en la 
medida de lo posible, salvo cuando puedas asociarla a otro tag ya 
establecido) s�lo la ejecutar�s contra un m�dulo completo.  El esqueleto 
del script que t� invocar�s podr�a ser algo as�:

#!/bin/bash

readonly SMARTFILE="log.txt"

case "$4" in
	SMARTFILE)
		# Hago lo que tenga que hacer
	;;
	*)
		# Esto no me interesa procesarlo
	;;
esac

exit 0


(ojo: en tus primeras pruebas, lim�tate a enviar a la salida est�ndar 
los par�metros de entrada, porque te estoy hablando de memoria y quiz� 
el formato de los par�metros de entrada no sea exactamente el que te digo).
-- 
SALUD,
Jes�s
***
jesus_navarro@undominio.net
***
Technical Details
Message-ID: <tuijd-db2.ln1@mithrandir.intranet>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!fu-berlin.de!uni-berlin.de!212.97.187.85!not-for-mail
References: <au4v15$4bdng$1@ID-131244.news.dfncis.de>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,2cc1b90df619f39
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-12-23 07:12:26 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!logbridge.uoregon.edu!fu-berlin.de!uni-berlin.de!212.97.187.85!not-for-mail
From: "Jesús M. NAVARRO"
 <jesus_navarro@undominio.net>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: CVS Returns: scripts parar detectar cambios
Date: Mon, 23 Dec 2002 15:24:59 +0100
Lines: 85
Message-ID: <tuijd-db2.ln1@mithrandir.intranet>
References: <au4v15$4bdng$1@ID-131244.news.dfncis.de>
NNTP-Posting-Host: 212.97.187.85
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1040656344 5159871 212.97.187.85 (16 [173178])
X-Orig-Path: mithrandir.intranet!news
User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2.1) Gecko/20021210 Debian/1.2.1-3
X-Accept-Language: es-es, es
In-Reply-To: <au4v15$4bdng$1@ID-131244.news.dfncis.de>