Actualizaciones automáticas de software desde un repository SVN local

Necesito crear un trabajo cron en mi máquina Linux para search automáticamente nuevas versiones de algún software crítico para el sistema que se mantiene a través de Subversion. Ya hice el pago, así que ahora solo necesitaría actualizar la copy local del código fuente y comstackr periódicamente las últimas versiones con un script cron.

De ahí la pregunta: ¿existe una manera fácil de determinar si una nueva versión del software ha aparecido en el repository local, probablemente teniendo la opción de search en subdirectorys de branches o tags , así como get la ruta al subdirectory? con la última versión (dentro de cualquiera de las branches o tags ), tal vez también la aplicación de una palabra key personalizada, por ejemplo, "security" para filtrar las actualizaciones no relacionadas con la security?

Puede escribir un script que llame a svn info y analice la revisión y / o las marcas de time para determinar si ha habido una actualización. Ejemplo de salida:

 $ svn info http://svn.networking-bean.com/repos/test/readme.doc Path: readme.doc Name: readme.doc URL: http://svn.networking-bean.com/repos/test/readme.doc Repository Root: http://svn.networking-bean.com/repos/test Repository UUID: 5e7d134a-54fb-0310-bd04-b611643e5c25 Revision: 1 Node Kind: file Schedule: normal Last Changed Author: sally Last Changed Rev: 42 Last Changed Date: 2003-01-14 23:21:19 -0600 (Tue, 14 Jan 2003) Lock Token: opaquelocktoken:14011d4b-54fb-0310-8541-dbd16bd471b2 Lock Owner: harry Lock Created: 2003-01-15 17:35:12 -0600 (Wed, 15 Jan 2003) Lock Comment (1 line): My test lock comment 

Podría include fácilmente una twig / label en la URL y usar el -R para get una list de routes debajo de ellas. Desde allí, puede recorrer las routes de primer nivel y verificar la revisión de cada una para determinar si hay una nueva. Observe que la salida contiene comentarios, la última timestamp modificada, revisión y tipo de nodo; eso debería ser todo lo que necesita para que su script funcione.

  • Si "… en el repository local …" significa "en el server de Subversion, que puedo administrar y configurar", entonces:

    • escriba el enlace post-commit, que verá los cambios en / tags | / branches ( svnlook dirs-changed REPO-PATH , fe) y ejecutará algunas acciones, si es necesario
  • Si solo tiene acceso remoto ordinario al repository, puede:

    • tener la última label (?) en la copy de trabajo
    • verifique el logging de repository / tags en cron (o por demanda)

Después de esto, tiene los resultados del análisis de svn info y svn log -q REPO-URL/tags/ -v -l 1 y detecta la aparición de una nueva label, la cual cambia | relocate + update o mkdir + checkout

Muestra:

Tag 1.0

 >svn info Path: . Working Copy Root Path: Z:\1.0 URL: http://mayorat.ursinecorner.ru:8088/svn/Hello/tags/1.0 Repository Root: http://mayorat.ursinecorner.ru:8088/svn/Hello Repository UUID: 65c3f143-cc60-1d4e-9546-1f0378d96c08 Revision: 34 Node Kind: directory Schedule: normal Last Changed Author: lazybadger Last Changed Rev: 11 Last Changed Date: 2010-07-17 04:45:05 +0600 (Сб, 17 июл 2010) 

Iniciar session

 >svn log -q http://mayorat.ursinecorner.ru:8088/svn/Hello/tags/ -v -l 1 ------------------------------------------------------------------------ r22 | lazybadger | 2010-07-17 05:31:00 +0600 (Сб, 17 июл 2010) Changed paths: A /tags/1.1 (from /trunk:21) ------------------------------------------------------------------------ 

o versión XML

 >svn log -q http://mayorat.ursinecorner.ru:8088/svn/Hello/tags/ -v -l 1 --xml --incremental <logentry revision="22"> <author>lazybadger</author> <date>2010-07-16T23:31:00.513125Z</date> <paths> <path text-mods="false" kind="dir" copyfrom-path="/trunk" copyfrom-rev="21" action="A" prop-mods="true">/tags/1.1</path> </paths> </logentry> 

en cualquier caso, extraiga el número de revisión del logging, y si es algo más que una revisión de WC ("Last Changed Rev"): tenemos que tener una nueva versión. La URL es la raíz del repository + (valor de ruta del logging XML | línea analizada con / tags del logging de text)

Intereting Posts