Article View: es.comp.os.linux.programacion
Article #8178Re: CVS Returns: scripts parar detectar cambios
From: "Jesús M. NAVARRO"
Date: Thu, 26 Dec 2002 15:49
Date: Thu, 26 Dec 2002 15:49
128 lines
7355 bytes
7355 bytes
Hola, Count: Count Zero wrote: > Iba "Jes�s M. NAVARRO" por es.comp.os.linux.programacion > > [...] > >>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 > > > No he entendido muy bien esta parte, pero creo que m�s o menos �s lo que > ten�a pensado. > > Quieres decir poner un fichero 'centinela' en el modulo para que el script > se fijar� s�lo en �l. > Exacto. > Pero si �s as� hay un problemilla. Supongamos que la �ltima revision de > todo el m�dula ya est� etiquetado como 'prod' (la etiqueta que busca el > script en el centinela). Modifico un fichero y hago un cvs tag -F prod. > C�mo s�lo hay un archivo (el modificado) que no tenga el tag CVS s�lo har� > tag sobre este. O sea que deber�a modificar cada vez el centinela para > 'activar' el script. Espero explicarme bien. > Si todo el m�dulo est� en estado 'prod' es que es un m�dulo de producci�n ;^D En realidad, hasta ahora, yo *s�* alteraba el fichero "centinela", porque lo usaba para procesar m�s informaci�n, de forma que sab�a que siempre ten�a que cambiar (concretamente, se ten�a que a�adir a �l una l�nea indicando qu� "petici�n de cambio" se completaba a la hora del checkin). Sin embargo *creo* (pero tendr�s que comprobarlo) que si haces `cvs tag -F prod nombre_modulo`, disparar�s la acci�n de taginfo contra tu fichero de cambio, incluso si su �ltima revisi�n tiene ya el tag "prod". En mi caso el flujo de trabajo iba m�s o menos como sigue: 1/ El responsable del proyecto acepta una "petici�n de cambio" a la que se da un identificador (la idea era "incrustar" este proceso en una herramienta tipo gnats o bugzilla, aunque esto no llegu� a implementarlo), digamos, 'cs_123' (por "ChangeSet n�mero 123") y se asigna a un responsable. El responsable, estudia la petici�n y le asigna los recursos que cree necesarios (puede resolverlo el mismo, puede requerir la ayuda de otros programadores, o incluso puede requerir que se completen tareas fuera del �mbito de la programaci�n, como conseguir aprobaci�n por parte del cliente, por ejemplo). En funci�n de lo complejo del caso, puede ser necesario o no crear una rama en el m�dulo (que se llamar�a br_cs_123, por BRanch para el ChangeSet n�mero 123). En todo caso, cuando se considera que se ha completado el proceso de desarrollo, al "fichero centinela" se a�ade una nueva l�nea, m�s o menos como sigue: cs_123: completed As�, el fichero de centinela ha cambiado, el cambio se env�a al repositorio y a todo esto se aplica el tag cs_123; esta aplicaci�n del tag dispara el script correspondiente a trav�s de taginfo que, entre otras cosas, en mi caso, actualizaba autom�ticamente un servidor web "staging" con los nuevos contenidos. Una vez que los contenidos eran revisados y aceptados, en principio, por el responsable del proyecto, �ste induce un nuevo cambio en el fichero centinela, de forma que la l�nea anterior pasa a ser cs_123: approved Por la noche, un proceso arrancado desde cron, realizaba un proceso que, entre otras cosas inclu�a lo siguiente: 1/ Generaba una sandbox a partir del tag "last_stable" (cvs co -r last_stable nombre_modulo deb�a ser el comando, poco m�s o menos) 2/ Se obtiene la �ltima versi�n del fichero centinela (cvs update -A fichero_centinela). En este fichero se buscan las l�neas que contienen tags en estado "approved", y se actualiza el sandbox sucesivamente a este nivel (cvs update -rNombreTag nombre_modulo). Como ejemplo, el fichero podr�a contener lo siguiente: cs_78: approved cs_124: completed cs_123: approved Entonces, el script extraer�a por last_stable, luego a�adir�a los cambios por el tag cs_123 y luego los correspondientes a cs_78 (como est� m�s alto en el fichero, eso significa que se cerr� m�s tarde). La sandbox en su estado actual es equivalente a la nueva versi�n de producci�n deseada (equivalente, no id�ntica, ya que esta sandbox puede requerir de variado "masajeo" -la fase de "building"- antes de ser id�ntica a lo que deseamos en producci�n: puede ser necesario, por ejemplo, ignorar cierto fichero de configuraci�n, o editarlo para que los datos de login/password inclu�dos sean los correctos, o cambiar de sitio alg�n fichero porque el layout en desarrollo no es exactamente el mismo que el del entorno de producci�n, o lo que sea). Pues eso: se procede a la fase de "build" y se actualizan por el procedimiento que sea los datos al servidor de producci�n (normalmente utilizando rsync sobre ssh, con el concurso o no de alg�n otro script en el propio servidor de producci�n). Finalmente, si todo ha ido con �xito, se borran las l�neas con changeset en estado "approved" que ya se hayan aplicado a producci�n y se "empuja" el tag "last_stable" a la posici�n actual. De nuevo, �ste es el proceso "m�s o menos", para que te hagas una idea: los detalles concretos de la implementaci�n, quedan para t� ;^P -- SALUD, Jes�s *** jesus_navarro@undominio.net ***
Technical Details
Message-ID:
<j0lrd-1q1.ln1@mithrandir.intranet>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!syros.belnet.be!news.belnet.be!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!212.97.187.85!not-for-mailReferences:
<au4v15$4bdng$1@ID-131244.news.dfncis.de> <tuijd-db2.ln1@mithrandir.intranet> <au7m3f$50vlm$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-26 08:12:14 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!syros.belnet.be!news.belnet.be!feed.news.nacamar.de!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: Thu, 26 Dec 2002 16:49:05 +0100 Lines: 129 Message-ID: <j0lrd-1q1.ln1@mithrandir.intranet> References: <au4v15$4bdng$1@ID-131244.news.dfncis.de> <tuijd-db2.ln1@mithrandir.intranet> <au7m3f$50vlm$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 1040919132 7164324 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: <au7m3f$50vlm$1@ID-131244.news.dfncis.de>