Taller de WinCvs Autores: Jaime Irving Dávila, Juan Pablo Quiroga. Copyright © Jaime Irving Dávila, Juan Pablo Quiroga. 2001. Se cede al dominio publico.

Taller de WinCVS
****************

Mediante el presente documento, queremos presentar un ejemplo de la funcionalidad de un servidor CVS, y de su cliente WinCVS. No describimos en detalle toda las capacidades de dicha herramienta, para ello remitimos a la documentación en línea de CVS http://wincvs.org.

Objetivos.
**********

 1. Crear un depósito central para la administración de configuraciones.

 2. Aprender el uso del "checkin", "checkout" en un depósito CVS.

 3. Manejar el uso de tags.

Configuración del servidor.
***************************

A continuación describimos el conjunto de pasos que son necesarios para configurar un servidor /CVS, con sistema Operacional GNU/Linux. En caso de necesitar mayores referencias see cvs.info

Creación del depósito central.
==============================

 1. Inicie una sesión en el servidor donde desea ubicar el depósito central de su proyecto  (En nuestro caso naoma@uniandes.edu.co)

 2. Defina la variable CVSROOT en tal máquina, dicha variable, contendrá el nombre del directorio donde usted tendrá su depósito, en nuestro ejemplo usaremos ~/deposito. Para ello son necesarias las siguientes líneas:

          CVSROOT=~/dep
          export CVSROOT

 3. Inicialice cvs, con el comando:

          cvs init

Creación del archivo de usuarios.
=================================

 1. Dentro del directorio previamente definido  (En nuestro caso
     ~\dep) ubíquese dentro del subdirectorio CVSROOT.

 2. Ahora, es necesario definir los usuarios que pueden acceder a dicho depósito central, esto lo hacemos en dos pasos:

      1. Creando el primer usuario  (Dicho nombre no tiene que ver con el login, etc.. Es simplemente un nombre predeterminado; sinembargo por claridad use los nombres de los integrantes del grupo). En nuestro caso lo haremos através del siguiente comando:

               htpasswd -c passwd jquiroga

          Y a continuación escribimos un password conveniente.

      2. Para los demás usuarios se omite la opción -c, obteniéndose por ejemplo:

               htpasswd passwd jdavila

          A continuación se escribe el password para cada uno de los miembros añadidos.

 3. Edite el archivo passwd agregando al final de cada línea el nombre de la cuenta.

     En nuestro caso dicho archivo luce de la siguiente forma:

          jquiroga:m14l1m5:is251
          jdavila:m14l1m5:is251

Información para administradores.
=================================

Esta sección sólo es necesaria para el administrador de la máquina, así que en caso de no tener permisos de superusuario omita su lectura.

 1. Es necesario que en el archivo /etc/inetd.conf añada una línea como la siguiente:

          cvspserver   stream   tcp   nowait   root   /usr/bin/cvs   cvs
          --allow-root=/home/is25201/dep --allow-root=/home/..'

     Note que es necesario cambiar las líneas `--allow-roo=/home/is25201/dep por la ruta donde se encuentra el depósito que acaba de crear.

 2. Posteriormente es necesario bajar y subir el servicio S20inetd para lo cual son necesarias las siguientes líneas:

          cd /etc/rc5.d
          S20inetd stop
          S20inetd start

Configuración en el cliente.
****************************

A continuación describiremos el proceso de configuración en el cliente, así como el conjunto de comandos necesarios para crear un espacio de trabajo y hacer las operaciones usuales con el depósito central.

Definición del depósito central.
================================

 1. Desde Windows, ejecute el programa WinCVS y en el menu Admin seleccione la opción Preferences (Alternativamente puede usar C-F1)

 2. Dentro de la pestaña General, en la sección Enter the
     CVSROOT digite una línea como la siguiente:

          :pserver:jdavila@naoma.uniandes.edu.co:home/is25201/dep

     Tenga en cuenta que debe modificar dicha línea de tal forma que se utilice un usuario válido en la definición hecha en el servidor see Creacion del archivo de usuarios.(en nuestro caso es jdavila@naoma.uniandes.edu.co y la ruta completa donde se encuentra el depósito central (En nuestro caso es /home/is2501/dep).

 3. En la sección Authentication, seleccione la opción correspondiente a:

          "passwd" file on the cvs server

 4. En la pestaña WinCvs es necesario definir el directorio donde se realizará la extracción. En nuestro caso tendremos una línea como la siguiente:

          c:/temp

Ingreso al sistema.
===================

Para hacer una sesión con el depósito central (i.e. hacer login) es necesario que realice lo siguiente:

 1. En el menú Admin, seleccione la opción Login, posteriormente coloque su password correspondiente see creación de passwords.

 2. Verifique que en la parte inferior de la ventana se obtiene el siguiente mensaje:

          ***CVS existed normall with code 0***

     Una vez haya obtenido dicho mensaje puede realizar las acciones normales sobre CVS i.e., see creación de espacios de trabajo,see "commit", etc.

Creación de un espacio de trabajo.
==================================

A continuación crearemos un espacio de trabajo, con el ejemplo FirstMVC del curso, para ello realice lo siguiente:

 1. Baje de la página del curso http://www.merlin.uniandes.edu.co/~jquiroga/isis252, el archivo FirstMVC.zip y descomprímalo en un directorio adecuado.

 2. Ubíquese en el directorio, en el explorador del WinCVS, donde descomprimió tal archivo.

 3. Vaya al menu Create, al sub-menú Import Module y seleccione el directorio adecuado, después de lo cual debe obtener una ventana con nombre Import Filter y presionar continue.

 4. Se deberá obtener una ventana de Import Settings. En dicha ventana realice los siguiente:

      1. En la sección Select the module name and path on the remote server, coloque el nombre de como quiere que se llame tal directorio en el depósito central, en nuestro caso lo llamaremos mvc.

      2. En la sección Initial vendor and release tags, en el campo Vendor tag coloque el nombre del grupo (en nuestro caso es SIGMA) y en el campo Release tag coloque la versión (en nuestro caso es MVC_1_0)

      3. Finalmente en la sección Enter the log message, coloque una descripción de dicho directorio:

               Ejemplo de una aplicación MVC sencilla

 5. Deberá obtener el mensaje:

          No conflict created by this import

Extracción de un módulo.
========================

Entenderemos por checkout al proceso mediante el cuál extraemos una copia local de dicho  módulo del depósito central, con el fin de que posteriormente podamos editarlo.

Selección del módulo.
---------------------

Para hacer checkout de un mo'dulo realice el siguiente conjunto de instrucciones:

 1. Seleccione en el menu Create, la opción Checkout Module

 2. En la pestaña Checkout Settings, en la sección Enter the module name and path on the server coloque el nombre del módulo que desea hacer checkou en nuestro caso, mvc.

 3. En la sección Local Folder to Checkout, seleccione el directorio donde desea extraer dicho módulo, en nuestro caso, temp/mvc.

 4. Deberá obtener el siguiente mensaje:

          ***CVS exited wiht normal code ***

Edición de los archivos del módulo.
-----------------------------------

Es necesario tener la información del módulo que ha extraído en el directorio local para poder observar la información de éste.

 1. Para ello ubíquese en el menu View, submenu Browse
     Location, Change y posicionese sobre el directorio que acabó de hacer Checkout, obteniendo en una ventana la información de los archivos de CVS.

 2. Para que pueda editar los archivos en su editor de texto favorito (i.e. Emacs), seleccione el archivo y vaya al menú Trace, submenú Edit, Select o haga click sobre el icono del lápiz.

     Obtendrá que el icono que aparece sobre dicho archivo es ahora un lápiz (i.e. será editable)

     En nuestro caso editaremos el archivo ListView.java

 3. Ahora Edítelo con su editor de texto (i.e. Emacs) arreglando el estándar de codificación.

 4. Una vez grabados los cambios sobre tal archivo, usted observará que en WinCVS el archivo correspondiente cambia de color a rojo indicando que todavía  no se ha actualizado en el depósito central.

Actualización del depósito central.
===================================

Una vez modificado nuestro archivo deseamos actualizarlo en el repositorio central, dicho proceso recibe el nombre de commit o checkin.

Sin embargo dicho proceso puede tener variantes de acuerdo a si tenemos la versión más actualizada del archivo que está en el depósito central; a continuación describimos las variantes en cada caso.

Actualización en ausencia de conflictos de versiones.
-----------------------------------------------------

Tendremos que la actualización no tendrá conflictos, en caso de que tengamos en nuestro espacio de trabajo la última versión del módulo del depósito central.

Para hacer dicha actualización debemos realizar lo siguiente:

 1. Seleccionar el o los archivos sobre los que desea realizar commit.

 2. Para actualizar el archivo en el depósito central hay que ir a al menu Modify, Commit Selection (o simplemente Control M).

 3. En la pestaña Commit Settings, en la sección Enter Log Settings indique la razón del cambio, i.e. Arreglo del estándar de codificación

Esto actualiza su depósito y verá que su archivo aparece de nuevo con estatus de poder ser editado, adicionalmente cambia su versión a la 1.2.

Actualización en caso de conflictos de versiones.
-------------------------------------------------

Suponga que se desea hacer commit de su archivo, sin embargo otra persona antes de que cambio fuera enviado, ha hecho checkin, creando una nueva versión dejando a los cambios que usted ha hecho sobre su archivo desactualizados.

En caso de que desee intente hacer commit de este archivo, obtendrá el siguiente error:

     Up to date checked failed for ListView.java

Por ende tendrá que realizar el siguiente conjunto de pasos:

 1. Tiene que actualizar el archivo de su espacio de trabajo, para lo cuál en el menú Modify, Update Selection, de Aceptar. ia su versio'n a la 1.2.

 2. El archivo se marca con una C indicando que no hubo problemas en el mezclado de dichos archivos.

 3. Al editar el archivo se obtiene un archivo con las modificaciones hechas por ambos y se debe decidir que partes de ambas se desea mantener.

 4. Grabe dicho archivo y ahora puede hacer commit de éste creando una nueva versión.

Uso de los tags.
================

Mediante un tag se puede nombrar un conjunto de archivos relacionados através de un nombre específico, facilitando el uso de éstos. Usando dicho nombre se pueden extraer posteriormente este conjunto de archivos.

A continuación describimos las actividades relacionadas con el uso y creación de dichos tags.

Creación de los tags.
---------------------

Siga los siguientes pasos:

 1. Seleccione los archivos y/o directorios relacionados, en nuestro caso los archivos fuente del programa, es decir todos los .java.

 2. En el menú Create, seleccione la opción Create a tag by module.

 3. En la pestña Create tag settings, en la sección Enter the tag name and which module to tag entre en el campo New Tag Name el nombre del tag deseado (en nuestro caso es CodigoFuente) y en el campo Module to tag el nombre del módulo actual, es decir mvc.

Observación de los tags disponibles.
------------------------------------

Para ver los tags que existen sobre un archivo debe hacer lo siguiente

 1. Seleccione el archivo del cuál desea ver los tags asociados, en nuestro caso escogeremos ListView.java

 2. En el menú Query, seleccione la opción Graph Selection (Ctrl-G)

 3. Al salir una ventana, simplemente presione aceptar.

Extracción de los archivos asociados con un tag
-----------------------------------------------

Para crear un espacio de trabajo con archivos asociados a un tag debe hacer lo siguiente:

 1. En la pestaña Checkout Settings, en el campo Enter the module name and path on the server, coloque el nombre del módulo (en nuestro caso mvc).

 2. En la pestaña Checkout Settings, en el campo Local folter to checkout to, dé el nombre del directorio donde desea extraer los archivos, por ejemplo c:\temp\CodigofuenteMVC.

 3. En la pestaña Checkout Options, en la sección Checkout Sticky Options, en el campo By Revision/Tag/Branch selecione o escriba el nombre del tag.

 4. Por último presione en aceptar.

Salida de la sesión.
====================

Por último no olvide salirse de la sesión de wincvs recién abierta para ello en el menú Admin de la opción logout