]> 2001-11-05 Utilización de WinCVS Un taller, para comenzar WinCVS Jaime Irving Dávila Latorre Juan Pablo Quiroga González
j-davila@uniandes.edu.co jquiroga@uniandes.edu.co
2001 Jaime Dávila, Juan Pablo Quiroga Este documento se cede al dominio público. Úselo sin ninguna garantía. 0.0 2001-04-03 jid Creación de documento inicial usando texinfo 0.1 2001-05-11 jid Formato Docbook. Sugerencias de Vladimir Tamara y Carlos Julio Ruiz.
Introducción Mediante el presente documento, queremos presentar un ejemplo de la funcionalidad de un servidor cvs en GNU/Linux, y de su cliente en Windows, WinCVS, en forma de taller. No describimos en detalle toda las capacidades de dicha herramienta, para ello remitimos a la documentación en línea de (wincvs). Sin embargo, siéntase libre de contactar a Jaime Irving o a Juan Pablo en caso de imprecisiones o explicación de alguna de las secciones. Nuestro objetivos en este taller son: Crear un depósito central para la administración de configuraciones. Aprender el uso del checkin(registro), checkout(extracción), en un depósito cvs. Manejar el uso de tags(marquillas). Esta versión de este documento fue realizado usando la herramienta DocBook, en contraste de la versión original que fue realizada usando texinfo. Queremos agradecer las valiosas sugerencias de Vladimir Támara y Carlos Julio Ruiz en especial en . Configuración del servidor GNU/Linux. servidor cvs servidor GNU/Linux A continuación describimos el conjunto de pasos que son necesarios para configurar un servidor cvs, con sistema operacional GNU/Linux. Creación del depósito central CVSROOT Inicialización del depósito central Inicie una sesión en el servidor donde desea ubicar el depósito central de su proyecto En nuestro caso dicho servidor es naoma@uniandes.edu.co Defina la variable CVSROOT en tal máquina, dicha variable, contendrá el nombre del directorio donde usted tendra su depósito, en nuestro ejemplo usaremos /~deposito. Para ello son necesarias las siguientes líneas: [is25201@naoma is25201]$ CVSROOT=~/deposito [is25201@naoma is25201]$ export CVSROOT Inicialice cvs, de la siguiente forma: [is25201@naoma is25201]$ cvs init Creación del archivo de usuarios passwd Archivo de passwords Creación de usuarios htpasswd Se indicará a continuación la forma de crear el archivo passwd, cuál permite registrar a los usuarios que tienen acceso al depósito central de datos. Para ello hay que seguir los siguientes pasos: Dentro del directorio previamente definido En nuestro caso ~/deposito , ubíquese dentro del subdirectorio CVSROOT. Ahora, es necesario definir los usuarios que pueden acceder a dicho depósito central, lo cual lo hacemos en dos pasos: Creando el primer usuario Dicho nombre no tiene que ver con el login, etc. Es simplemente un nombre predeterminado; sin embargo por claridad use los nombres de las personas que tendrán acceso a tal depósito. , de la siguiente forma: [is25201@naoma CVSROOT]$ htpasswd -c passwd jquiroga Luego digite el password correspondiente a este usuario. El comando htpasswd -c crea un archivo passwd en el cual se guarda el password del usuario jquiroga. Para los demás usuarios se omite la opción , obteniéndose por ejemplo: [is25201@naoma CVSROOT]$ htpasswd passwd jdavila Y a continuación se escribe el password para cada uno de los nuevos miembros. Es necesario editar el archivo passwd agregando al final de cada línea el nombre de la cuenta. En nuestro caso archivo luce de la siguiente forma: jquiroga:m14lm5:is25201 jdavila:m14lm5:is25201 Información para administradores administración del servidor inetd.conf S20inetd Esta sección sólo es necesaria para el admistrador de la máquina, así que en caso de no tener permisos de usuarios, solicite a su administrador que siga las siguientes instrucciones: Es necesario que en el archivo /etc/inetd.conf agregue una linea como la siguiente: cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root= /home/is25201/deposito pserver Note que es necesario cambiar la linea /home/is25201/deposito por la ruta donde se encuentra el depósito que se acaba de crear. De otro lado pserver indica el protocolo mediante el cual se conectan los clientes al depósito central, en caso de desear mayor seguridad es necesario emplear el protocolo de cvs junto con ssh. Para instalar ssh en Debian 2.2 instalar el paquete ssh y después borrar el archivo /etc/ssh/sshd_not_to_be_run. Posteriormente es necesario bajar y subir el servicio S20inetd para lo cual son necesarias las siguiente líneas: [root@naoma /]$ cd /etc/rc5.d [root@naoma rc5.d]$ S20inetd stop [root@naoma rc5.d]$ S20inetd start En caso de que no se tenga en su distribucion de GNU/Linux instalado previamente el paquete cvs, tenga en cuenta las siguientes instrucciones para Debian 2.2, es necesario usar el paquete cvs (por ejemplo desde el program dselect). Para configurar cvs(después de instalado) ejecutar dpkg-reconfigure-cvs, la interfaz guiada por menús le solicitará el nombre del directorio donde desea el depósito y si lo desea activará (modificando /etc/inetd.conf). Configuración del cliente en Windows A continuación describirmemos el proceso de configuracion en el cliente, asi 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 wincvs conexión al depósito central autenticación de usuarios directorio local Desde Windows, ejecute el programa wincvs y luego realice Admin Preferences (Alternativamente puede usar Ctrl F1 ) En 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/deposito En caso de utilizar protocolo seguro, usar en vez de pserver, ext Tenga en cuenta que modificarse dicha línea de tal forma que se utilice un usuario válido en la definición hecha en el servidor, ver (En nuestro caso es jdavila@naoma.uniandes.edu.co), adicionalmente se debe incluir la ruta completa desde la raíz de la máquina, donde se ubica el depósito central (En nuestro caso es /home/is25201/deposito) En la sección Authentication seleccione la opción correspondiente "passwd" file on the cvs server Ventana de configuración de la variableCVSROOT en el cliente Configuración de la variable CVSROOT en el cliente 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. login ingreso Para comenzar una sesión con el depósito central (es decir login es necesario que realice los siguientes pasos Realice Admin Login y posteriormente coloque su password correspondiente (ver ) Verifique que en la parte inferior de la ventana se obtenga el siguiente mensaje *** CVS exited normal with code 0 Una vez haya obtenido dicho mensaje podrá realizar las acciones normales sobre cvs. Creación de un espacio de trabajo espacio de trabajo módulo A continuación crearemos un espacio de trabajo, usando el archivo de ejemplo FirstMVC, para ello realice los siguiente Baje el archivo y descomprímalo en un directorio adecuado. Ubíquese dentro del directorio donde descomprimió el archivo usando el explorador de wincvs. Explorador ubicado en el módulo a importar. cliente Directorio del archivo descomprimido Vaya al menú Create, al submenú Import Module y seleccione el directorio adecuado (es decir aquel donde está descomprimido el archivo), después de lo cual debe obtener una ventana con nombre Import Filter y luego presione continue. Diálogo de resultados de la importación del módulo. Resultados de la importación del módulo. Se deberá obtener una ventana de Import Settings. En dicha ventana realice lo siguiente: En la sección Select the module name and paht 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 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). Finalmente, en la sección Enter the log message, coloque una descripción de dicho directorio, en nuestro caso es Ejemplo de una aplicación MVC sencilla. Ventana de descripción del checkin Descripción del checkin. Deberá obtener el mensaje: No conflict created by this import Extracción de un módulo checkout copia local Entenderemos por checkout al proceso mediante el cuál extraemos una copia local de un módulo del depósito central, con el fin de posteriormente podamos editarla. Selección del módulo Para hacer checkout de un módulo realice el siguiente conjunto de instrucciones Seleccione Create Checkout Module . 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 hacercheckout, en nuestro caso mvc. En la sección Local Folder to Checkout, seleccione el directorio donde desea extraer dicho módulo, en nuestro caso, c:\temp\mvc . Deberá obtener el siguiente mensaje ***CVS exited with normal code *** Edición de los archivos del módulo. edición Es necesario tener la información del módulo que se ha extraído, en el directorio local con el ánimo de poder observar la información de éste, para ello: Realice View Browse Location Change y posiciónese sobre el directorio sobre el que acabó de hacer checkout, obteniendo en una ventana la información de los archivos de cvs. Ventana de elección de archivos para checkout Elección de archivos de checkout. Para que pueda editar los archivos en su editor de texto favorito es decir, emacs , seleccione el archivo y haga Trace Edit Select , o haga click sobre el icono del lapiz. En nuestro caso, editaremos el archivo ListView.java. Modifique dicho archivo con su editor de texto, arreglando el estándar de codificación. Edición usando emacs del estándar de codificación Edición del archivo. Una vez grabados los cambios sobre tal archivo, usted observará que en wincvs el archivo correspondiente se presenta con color rojo, indicando que tal copia local, no se ha actualizado en el depósito central. Actualización del depósito central. checkin commit actualización del depósito central Una vez modificado nuestro archivo deseamos actualizarlo en el depósito central, tal acción 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. Actualizacion en ausencia de conflictos de versiones commit checkin La actualización de un archivo en el depósito central 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: Seleccionar el o los archivos sobre los que se desear realizar commit. Para actualizar en el depósito central hay que realizar Modify Commit Selection (o simplemente Control M ). En la pestaña Commit Settings, en la sección Enter Log Settings, indique la razón del cambio, es decir, Arreglo del estándar de codificación. Diálogo de commit del archivo. commit del archivo. 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 1.2. Actualización en caso de conflictos de versiones checkin commit conflictos de versiones Suponga que se desea hacer commit de su archivo, sin embargo otra persona de que su cambio fuera envíado, ha hecho checkin, creando una nueva versión y por ende dejando que los cambios que usted ha hecho sobre su archivo desactualizados. En caso de que intente hacer commit de este archivo, obtendrá el siguiente error: Up to date checked failed for ListView.java Diálogo de error al hacer commit del archivo. Error al hacer commit del archivo. Por ende tendrá que realizar el siguiente conjunto de pasos: Tiene que actualizar el archivo de su espacio de trabajao, para lo cuál realice Modify Update Selection y luego de Aceptar. El archivo se marca con una C, indicando que no hubo problemas en el mezclado de dichos archivos. Al editar el archivo se obtiene un archivo con las modificaciones hechas a ambas versiones, por lo que se debe decidir que partes de ambas se desean mantener. Grabe las modificaciones que decidió mantener y ahora puede hacer commit de tal archivo, creándose una nueva versión. emacs editando el archivo con las dos versiones. Edición del archivo con dos versiones. Uso de los <foreignphrase>tag's</foreignphrase> tag Mediante un tag se puede nombrar un conjunto de archivos relacionados a travé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 tag's. Creacion de los <foreignphrase>tag's</foreignphrase> Siga los siguientes pasos: creación Seleccione los archivos y/o directorios relacionados, en nuestro caso los archivos fuentes del programa, es decir todos los archivos con extension .java Ventana para escoger archivos del tag. Escogiendo archivos del tag. Realice Create Create a tag by module . En la pestañ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 CodigoFuente) y en el campo Module to tag el nombre del módulo actual, es decir mvc. Observación de los <foreignphrase>tag's</foreignphrase> disponibles tags de un archivo. Para ver los tag's que existen sobre un archivo debe hacer lo siguiente Seleccione el archivo del cuál desea ver los tag' asociados, en nuestro caso escogeremos ListView.java. Realice Query Graph Selection , o alternativamente Ctrl G Al salir una ventana, simplemente presione aceptar. Grafo de los tags de un Archivo tags de un archivo. tag extración de archivos Extracción de los archivos asociados con un <foreignphrase>tag</foreignphrase> Para crear un espacio de trabajo con archivos asociados a un tag debe hacer lo siguiente: 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 es mvc). En la pestaña Checkout Settings, en el campo Local folder to checkout to, dé el nombre del directorio donde desea extraer los archivos, por ejemplo c:\temp\CodigofuenteMVC. En la pestaña Checkout Options, en el campo By Revision/Tag/Branch seleccione o escriba el nombre del tag. Por último presione en aceptar. Salida de la sesión logout salida de la sesión Por último, no olvide salirse de la sesión de wincvs, para lo cual realice Admin logout &genindex.sgml;