A blog about data, information and IT, by Mario Alberich

Jul 01
2013

Phing (VII) - Operaciones con control de versiones

Si la automatización de tareas es uno de los grandes objetivos de Phing, la gestión del control de versiones es un objetivo importante. Las tareas de despliegues sistemáticos, principalmente para el testeo y la integración continua se pueden agilizar utilizando Phing.

Para el caso, veremos las tareas disponibles para las dos herramientas más populares de control de versiones: Git y Subversion. Salvo excepciones notables, las tareas de ambos casos permiten más o menos los mismos objetivos, pero dado que los dos sistemas tienen algunas diferencias estructurales y de nomenclatura, las tareas varían ligeramente.

Los siguientes apartados asumen que ya tienes unas nociones mínimas del concepto de control de versiones, así como de los comandos más habituales. Si no fuera así, visita la documentación de Git o el libro de Subversion.

Inicialización de repositorio


En el caso de git, tenemos GitInit:


Lo anterior inicializa un repositorio. La opción bare permite inicializarlo sin mostrar la estructura de directorios. Esto es especialmente apropiado al instalarlo en servidores que alojarán estos repositorios (al estilo Github o similares).

Subversion en este caso no tiene una rutina de inicialización de repositorios.

Registro de actividad (log)


En el caso de Git:


    since="Sun Jan 23 23:55:42 2013 +0300"
until="Mon Jan 24 09:59:33 2013 +0300"
outputProperty="logs"
repository="/ruta/al/repositorio" />

Y en el caso de subversion:


    svnpath="/usr/bin/svn"
workingcopy="/home/user/svnwc"
propertyname="svn.log"/>

En ambos casos tienen otras varias opciones, aunque hay que reconocer que Git ofrece más posibilidades de filtro y formatos de salida.

Obtener copias de repositorios ajenos


En git, esta función se cumple con git clone:


    repository="git://github.com/path/to/repo/repo.git"
targetPath="/ruta/al/repositorio"/>

En el caso de subversion, la operación es la de checkout:


   svnpath="/usr/bin/svn"
repositoryurl="svn://localhost/project/trunk/"
todir="/ruta/a/copia/de/trabajo"/>

Trabajo con ramas (branching y merging)


En el caso de Git, las operaciones son el GitBranch, GitMerge y GitCheckout:


    repository="/ruta/a/repo"
branchname="nombre-rama" />


    repository="/ruta/a/repo"
remote="nombre-rama-1 nombre-rama-2"
message="merging repos" commit="true" />


    repository="/ruta/al/repositorio"
branchname="mi-rama" quiet="true" create="true" />

En el caso de subversion, utilizamos SvnCopy y SvnSwitch:


   svnpath="/usr/bin/svn"
username="anony"
password="anony"
nocache="true"
repositoryurl="svn://localhost/project/trunk/"
todir="svn://localhost/project/tags/0.1"/>


   svnpath="/usr/bin/svn"
repositoryurl="http://localhost/project/tags/2.4.2"
todir="/ruta/a/copia/trabajo"/>

No existe tarea de Subversion para el proceso de merge.

Sincronización de repositorios


Git dispone de las tareas GitPush, GitPull, y GitFetch:


    repository="/ruta/al/repositorio"
refspec="master:foobranch" tags="true" />


    repository="/ruta/al/repo" all="true" />


    repository="/ruta/al/repo" all="true" />

Subversion dispone de las tareas SvnCommit, y SvnUpdate,


    workingcopy="/ruta/a/copia/local"
message="Comentario del commit" />


   svnpath="/usr/bin/svn"
todir="/ruta/a/copia/local"/>

 

Tags

gestión documental 10     Recuperación información 11     Linux 7     Usabilidad 5     open source 3     Tagging 12     lógica borrosa 2     fuentes de información 12     Google 6     off-topic 6     spam 2     grafos 6     Web social 11     modelización 12     Productividad 11     buscadores 2     utilidades 17     Profesionales 9     SEO 5     estándares 3     veracidad 3     relevancia 2     lingüística 2     PLN 2     lenguajes documentales 2     apis-mashups 3     reseñas 7     Flash 7     Gráficos estadísticos 13     Publicidad 3     Innovación 5     muestreo estadístico 9     PHP 14     internet 2     testeo 12     desarrollo 3     visualizacion 36     javascript 16     datos abiertos 9     elecciones 2     simulación 5     html5 7     phing 9     ssh 2     seguridad 3     indicadores 2     demografía 3     media 2     algoritmos 7     shell 4     mysql 2     backup 2     big data 6     twitter 2     d3js 11     revealjs 2     metodología 6     data-journalism 6     smartcities 2     NYT 2     privacidad 3     benchmarking 4     recopilaciones 21     magento 5     formacion 2     github 2     HHVM 3     psicología 2     angularjs 3     grep 2     nodejs 5     promises 2     mapreduce 3     crossfilter 2     exploración de datos 2     machine learning 2    

© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.