No registered users in community xowiki in last 10 minutes
Este reporte trata de describir las caracteristicas de ARCH y SUBVERSION. La idea es decidir cual de los 2 Sistemas de Control de Versiones se acopla a las necesidades del equipo de desarrollo GES.
Las caracteristicas que buscamos en un sistema de control de versiones son:
Visualizar detalles de las operaciones que cada uno de los usuarios realiza en el repositorio.
Poder mantener historial de operaciones que se han reazliado sobre algun archivos, a pesar de los cambios que pudiese sufrir ( cambios de nombre y cambios de path para ser especificos ).
Soporte para realizar operaciones de merge.
Poder integrar de forma facil nuevos cambios que vaya sufriendo nuestro "core". ( Esto se refiere a los cambios que podriamos integrar desde el repositorio de cvs.openacs.org ).
Poder trasladar al repositorio de cvs.openacs.org las contribuciones que se trabajan. ( Idealmente esto deberia de hacerse directamente desde el repositorio ).
A continuacion vemos algunas de las carateristicas que tiene ARCH.
ARCH:
Trabaja en base a "changesets" ( estos changesets toman en cuenta cambios de permisos y renombramiento de los archivos ). De esta forma, cuando se hace un checkout, se descarga primero la version original de todo el proyecto y luego se van aplicando los changesets necesarios para obtener la version que se desea obtener del proyecto.
Construye "revision libraries" que realmente son snapshots de revisiones intermedias ( esto agiliza el obtener cieras versiones de los archivos a la hora de estar realizando operaciones, por ej. realizar un merge ).
Repositorios distribuidos.
Proceso poderoso de "merge" ya que el modelo de arch esta basado en "changesets".
Arch trabaja con patch-logs ( bitacoras que guardan los "changesets" que han sido aplicados al proyecto); con esto podemos realizar merges de forma repetitiva sin obtener conflictos.
En Arch los branches son poco costosos, asi que los creadores del proyecto instan a los usuarios a utilizarlos. La contraparte de esto es que agrega mucho mas complejidad al proyecto tener un gran numero de "branches".
Arch es liviano debido a que su enfoque es tomar ventaja de programas POSIX; un claro ejemplo es el manejo de los permisos sobre que usuarios pueden escribir al repositorio.
Arch no es multiplataforma ( debido a su dependencia con programas POSIX ).
La logica operacional de arch se encuentra del lado de las herramientas "cliente", por lo cual un repositorio puede ser un directorio compartido o n sitio ftp.
Las convenciones en los nombres de algunos de los archivos que utilizan de control, no son las convenientes ya que estas convenciones generan problemas con algunos editores de texto ( vi, vim , etc. ).
Muchos usuarios de Arch mencionan que existen muchas tareas que pueden ser automatizadas y que por el momento deben de ser ejecutadas de forma manual.
En las guias de uso de arch se recomienda que un projecto en arch debe de ser divididos en el tiempo; esto debido a que se acumula una gran cantidad de datos para un solo proyecto.
Arch puede esconder "branches" que no han sido utilizados a lo largo de 1 anio.
Algunos de los comandos podrian ser confusos para los usuarios. Por ejemplo el comando "move" y "mv" realizan variaciones de mover un archivo.
Utilizando Arch como un SCM centralizado se recomienda que todos los usuarios que van a interactuar con el repositorio deben de utilizar una sola cuenta.
Regularmente las personas deben de saber la logica de funcionamiento de Arch para poder resolver algun problema que Arch presente.
Arch tiene la bondad de poder convivir con CVS, ya que podemos tomar en cuenta dentro del proyecto, los archivos de control de CVS. Ademas existen aplicaciones extra que mantienen sincronizados el repositorio de Arch y el repositorio de CVS.
A diferencia de Arch, subversion utiliza "snapshots" para llevar control de las versiones del proyecto. Todo el repositorio del proyecto esta conformado por copias "completas" del proyecto.
El modelo que utiliza a subversion es mucho mas intuitivo para aquellos usuarios que han utilizado CVS.
Dado que SVN esta basado en el modelo de "snapchosts" hacer un checkout es un "simple download".
Cuenta con la habilidad de poder versionar directorios y mover archivos.
Subversion no lleva un control de los cambios que han sido aplicados, por lo tanto tratar de aplicar un patch mas de una vez produce problemas.
Subversion no esta disenado para poder trabajar con repositorios distribuidos.
Subversion tiene un nivel de abstraccion mucho mayor que Arch, es decir que muchas operaciones estan automatizadas por lo cual la utilizacion de SVN es muchas mas simple y sencilla.
Se requieren varios programas ajenos directamente a subversion para que subversion funcione, esto hace un poco complejo mantenerlo.
Su funcionamiento es muy similar a CVS, muchos de los comandos que se encuentran en CVS tienen su similar en SVN.
La transicion para los usuarios de CVS a SVN es relativamente facil comparada con ARCH; ya que con ARCH muchas veces los usuarios deben de entender la logica de funcionameinte de arch.
La comunidad de subversion ha hecho muchas mas contribuciones con scripts que puede ayudar a realizar muchas tareas sobre el repositorio, como por ejemplo generar graficas sobre el repositorio o a convertir un repositorio de CVS a un repositorio de SVN.