\input texinfo @c -*-texinfo-*- @c %**start of header @setfilename wincvs.info @settitle Taller de WinCvs @c %**end of header @documentlanguage es @macro ia{} @ifnothtml @'{@dotless{i}} @end ifnothtml @ifhtml @html í@end html @end ifhtml @end macro @ifinfo Taller de WinCvs Autores: Jaime Irving D@'avila, Juan Pablo Quiroga. Copyright @copyright{} Jaime Irving D@'avila, Juan Pablo Quiroga. 2001. Se cede al dominio publico. @end ifinfo @titlepage @title Taller de WinCvs @author Ingenier@ia{}a de Software, 3 de Abril de 2001. Profesores: Jaime Irving D@'avila, Juan Pablo Quiroga. @end titlepage @ifnottex @node Top, Objetivos, (dir), (dir) @top 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@'on en l@ia{}nea de CVS @uref{http://wincvs.org}. @menu * Objetivos:: * Configuracion del servidor:: * Configuracion en el cliente:: * Indice de conceptos:: @end menu @end ifnottex @ifnothtml @contents @end ifnothtml @node Objetivos, Configuracion del servidor, Top, Top @chapter Objetivos. @enumerate @item Crear un dep@'osito central para la administraci@'on de configuraciones. @item Aprender el uso del "checkin", "checkout" en un dep@'osito CVS. @item Manejar el uso de tags. @end enumerate @node Configuracion del servidor, Configuracion en el cliente, Objetivos, Top @chapter Configuraci@'on del servidor. @cindex servidor CVS @cindex servidor GNU/Linux A continuaci@'on describimos el conjunto de pasos que son necesarios para configurar un servidor /CVS, con sistema Operacional GNU/Linux. En caso de necesitar mayores referencias @inforef{top, ,cvs.info} @menu * Creacion del deposito central:: * Creacion del archivo de usuarios:: * Informacion para administradores:: @end menu @node Creacion del deposito central, Creacion del archivo de usuarios, Configuracion del servidor, Configuracion del servidor @section Creaci@'on del dep@'osito central. @cindex @env{CVSROOT} @cindex inicializaci@'on del dep@'osito central @enumerate @item Inicie una sesi@'on en el servidor donde desea ubicar el dep@'osito central de su proyecto @footnote{En nuestro caso naoma@@uniandes.edu.co} @item Defina la variable @env{CVSROOT} en tal m@'aquina, dicha variable, contendr@'a el nombre del directorio donde usted tendr@'a su dep@'osito, en nuestro ejemplo usaremos @file{~/deposito}. Para ello son necesarias las siguientes l@ia{}neas: @example @command{CVSROOT=~/dep} @command{export CVSROOT} @end example @item Inicialice @file{cvs}, con el comando: @example @command{cvs init} @end example @end enumerate @node Creacion del archivo de usuarios, Informacion para administradores, Creacion del deposito central, Configuracion del servidor @section Creaci@'on del archivo de usuarios. @cindex creaci@'on de usuarios @cindex @file{passwd} @cindex archivo de passwords @cindex @command{htpasswd} @enumerate @item Dentro del directorio previamente definido @footnote{En nuestro caso @file{~\dep}} ub@ia{}quese dentro del subdirectorio @file{CVSROOT}. @item Ahora, es necesario definir los usuarios que pueden acceder a dicho dep@'osito central, esto lo hacemos en dos pasos: @enumerate @item Creando el primer usuario @footnote{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@'es del siguiente comando: @example @command{htpasswd -c passwd jquiroga} @end example Y a continuaci@'on escribimos un password conveniente. @item Para los dem@'as usuarios se omite la opci@'on @option{-c}, obteni@'endose por ejemplo: @example @command{htpasswd passwd jdavila} @end example A continuaci@'on se escribe el password para cada uno de los miembros a@~nadidos. @end enumerate @item Edite el archivo @file{passwd} agregando al final de cada l@ia{}nea el nombre de la cuenta. En nuestro caso dicho archivo luce de la siguiente forma: @example @samp{jquiroga:m14l1m5:is251} @samp{jdavila:m14l1m5:is251} @end example @end enumerate @node Informacion para administradores, , Creacion del archivo de usuarios, Configuracion del servidor @section Informaci@'on para administradores. @cindex administraci@'on del servidor @cindex @file{inetd.conf} @cindex @command{S20inetd} Esta secci@'on s@'olo es necesaria para el administrador de la m@'aquina, as@ia{} que en caso de no tener permisos de superusuario omita su lectura. @enumerate @item Es necesario que en el archivo @file{/etc/inetd.conf} a@~nada una l@ia{}nea como la siguiente: @example cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/is25201/dep --allow-root=/home/..' @end example Note que es necesario cambiar las l@ia{}neas @samp{`--allow-roo=/home/is25201/dep} por la ruta donde se encuentra el dep@'osito que acaba de crear. @item Posteriormente es necesario bajar y subir el servicio @command{S20inetd} para lo cual son necesarias las siguientes l@ia{}neas: @example @command{cd /etc/rc5.d} @command{S20inetd stop} @command{S20inetd start} @end example @end enumerate @node Configuracion en el cliente, Indice de conceptos, Configuracion del servidor, Top @chapter Configuraci@'on en el cliente. A continuaci@'on describiremos el proceso de configuraci@'on en el cliente, as@ia{} como el conjunto de comandos necesarios para crear un espacio de trabajo y hacer las operaciones usuales con el dep@'osito central. @menu * Definicion del deposito central:: * Ingreso al sistema:: * Creacion de un espacio de trabajo:: * Extraccion de un modulo:: * Actualizacion del deposito central:: * Uso de los "tags":: * Salida de la sesion:: @end menu @node Definicion del deposito central, Ingreso al sistema, Configuracion en el cliente, Configuracion en el cliente @section Definici@'on del dep@'osito central. @cindex @file{wincvs} @cindex definici@'on de dep@'osito central @cindex autenticaci@'on @cindex directorio local @enumerate @item Desde Windows, ejecute el programa WinCVS y en el menu @samp{Admin} seleccione la opci@'on @samp{Preferences} (Alternativamente puede usar @key{C-F1}) @item Dentro de la pesta@~na @samp{General}, en la secci@'on @samp{Enter the CVSROOT} digite una l@ia{}nea como la siguiente: @example @kbd{:pserver:jdavila@@naoma.uniandes.edu.co:home/is25201/dep} @end example Tenga en cuenta que debe modificar dicha l@ia{}nea de tal forma que se utilice un usuario v@'alido en la definici@'on hecha en el servidor @xref{Creacion del archivo de usuarios}.(en nuestro caso es @samp{jdavila@@naoma.uniandes.edu.co} y la ruta completa donde se encuentra el dep@'osito central (En nuestro caso es @file{/home/is2501/dep}). @item En la secci@'on @samp{Authentication}, seleccione la opci@'on correspondiente a: @example @samp{"passwd" file on the cvs server} @end example @image{graficas/ConfiguracionCVSROOTCliente, 5cm} @item En la pesta@~na @samp{WinCvs} es necesario definir el directorio donde se realizar@'a la extracci@'on. En nuestro caso tendremos una l@ia{}nea como la siguiente: @example @kbd{c:/temp} @end example @end enumerate @node Ingreso al sistema, Creacion de un espacio de trabajo, Definicion del deposito central, Configuracion en el cliente @section Ingreso al sistema. @cindex @command{login} @cindex ingreso Para hacer una sesi@'on con el dep@'osito central (i.e. hacer @dfn{login}) es necesario que realice lo siguiente: @enumerate @item En el men@'u @samp{Admin}, seleccione la opci@'on @samp{Login}, posteriormente coloque su password correspondiente @xref{Creacion del archivo de usuarios,,creaci@'on de passwords}. @item Verifique que en la parte inferior de la ventana se obtiene el siguiente mensaje: @example @samp{***CVS existed normall with code 0***} @end example Una vez haya obtenido dicho mensaje puede realizar las acciones normales sobre CVS i.e., @xref{Creacion de un espacio de trabajo,,creaci@'on de espacios de trabajo},@xref{Actualizacion del deposito central,,"commit"}, etc. @end enumerate @node Creacion de un espacio de trabajo, Extraccion de un modulo, Ingreso al sistema, Configuracion en el cliente @section Creaci@'on de un espacio de trabajo. @cindex espacio de trabajo @cindex m@'odulo A continuaci@'on crearemos un espacio de trabajo, con el ejemplo @file{FirstMVC} del curso, para ello realice lo siguiente: @enumerate @item Baje de la p@'agina del curso @uref{http://www.merlin.uniandes.edu.co/~jquiroga/isis252}, el archivo @file{FirstMVC.zip} y descompr@ia{}malo en un directorio adecuado. @item Ub@ia{}quese en el directorio, en el explorador del WinCVS, donde descomprimi@'o tal archivo. @image{graficas/UbicarseExploradorModuloImportar, 10cm} @item Vaya al menu @samp{Create}, al sub-men@'u @samp{Import Module} y seleccione el directorio adecuado, despu@'es de lo cual debe obtener una ventana con nombre @samp{Import Filter} y presionar @samp{continue}. @image{graficas/ImportacionModuloResultados,6cm} @item Se deber@'a obtener una ventana de @samp{Import Settings}. En dicha ventana realice los siguiente: @enumerate @item En la secci@'on @samp{Select the module name and path on the remote server}, coloque el nombre de como quiere que se llame tal directorio en el dep@'osito central, en nuestro caso lo llamaremos @file{mvc}. @item En la secci@'on @samp{Initial vendor and release tags}, en el campo @samp{Vendor tag} coloque el nombre del grupo (en nuestro caso es @acronym{SIGMA}) y en el campo @samp{Release tag} coloque la versi@'on (en nuestro caso es @file{MVC_1_0}) @item Finalmente en la secci@'on @samp{Enter the log message}, coloque una descripci@'on de dicho directorio: @example @kbd{Ejemplo de una aplicaci@'on MVC sencilla} @end example @image{graficas/ConfiguracionImportacion,7cm} @end enumerate @item Deber@'a obtener el mensaje: @example @samp{No conflict created by this import} @end example @end enumerate @node Extraccion de un modulo, Actualizacion del deposito central, Creacion de un espacio de trabajo, Configuracion en el cliente @section Extracci@'on de un m@'odulo. @cindex @command{checkout} @cindex copia local Entenderemos por @dfn{checkout} al proceso mediante el cu@'al extraemos una copia local de dicho m@'odulo del dep@'osito central, con el fin de que posteriormente podamos editarlo. @menu * Seleccion del modulo:: * Edicion de los archivos del modulo:: @end menu @node Seleccion del modulo, Edicion de los archivos del modulo, Extraccion de un modulo, Extraccion de un modulo @subsection Selecci@'on del m@'odulo. Para hacer @dfn{checkout} de un mo'dulo realice el siguiente conjunto de instrucciones: @enumerate @item Seleccione en el menu @samp{Create}, la opci@'on @samp{Checkout Module} @item En la pesta@~na @samp{Checkout Settings}, en la secci@'on @samp{Enter the module name and path on the server} coloque el nombre del m@'odulo que desea hacer @dfn{checkou} en nuestro caso, @kbd{mvc}. @item En la secci@'on @samp{Local Folder to Checkout}, seleccione el directorio donde desea extraer dicho m@'odulo, en nuestro caso, @file{temp/mvc}. @item Deber@'a obtener el siguiente mensaje: @example @samp{***CVS exited wiht normal code ***} @end example @c @image{graficas/CheckoutModulo, 7cm} @end enumerate @node Edicion de los archivos del modulo, , Seleccion del modulo, Extraccion de un modulo @subsection Edici@'on de los archivos del m@'odulo. @cindex edici@'on Es necesario tener la informaci@'on del m@'odulo que ha extra@ia{}do en el directorio local para poder observar la informaci@'on de @'este. @enumerate @item Para ello ub@ia{}quese en el menu @samp{View}, submenu @samp{Browse Location, Change} y posicionese sobre el directorio que acab@'o de hacer Checkout, obteniendo en una ventana la informaci@'on de los archivos de CVS. @image{graficas/VerModuloCheckout, 10cm} @item Para que pueda editar los archivos en su editor de texto favorito @footnote{i.e. Emacs}, seleccione el archivo y vaya al men@'u @samp{Trace}, submen@'u @samp{Edit, Select} o haga click sobre el icono del l@'apiz. Obtendr@'a que el icono que aparece sobre dicho archivo es ahora un l@'apiz (i.e. ser@'a editable) En nuestro caso editaremos el archivo @file{ListView.java} @item Ahora Ed@ia{}telo con su editor de texto (i.e. Emacs) arreglando el est@'andar de codificaci@'on. @image{graficas/EdicionArchivo,10cm} @item Una vez grabados los cambios sobre tal archivo, usted observar@'a que en WinCVS el archivo correspondiente cambia de color a rojo indicando que todav@ia{}a no se ha actualizado en el dep@'osito central. @end enumerate @node Actualizacion del deposito central, Uso de los "tags", Extraccion de un modulo, Configuracion en el cliente @section Actualizaci@'on del dep@'osito central. @cindex @command{checkin} @cindex @command{commit} @cindex actualizaci@'on del dep@'osito central Una vez modificado nuestro archivo deseamos actualizarlo en el repositorio central, dicho proceso recibe el nombre de @dfn{commit} o @dfn{checkin}. Sin embargo dicho proceso puede tener variantes de acuerdo a si tenemos la versi@'on m@'as actualizada del archivo que est@'a en el dep@'osito central; a continuaci@'on describimos las variantes en cada caso. @menu * Actualizacion en ausencia de conflictos de versiones:: * Actualizacion en caso de conflictos de versiones:: @end menu @node Actualizacion en ausencia de conflictos de versiones, Actualizacion en caso de conflictos de versiones, Actualizacion del deposito central, Actualizacion del deposito central @subsection Actualizaci@'on en ausencia de conflictos de versiones. @cindex @command{commit} @cindex @command{checkin} Tendremos que la actualizaci@'on no tendr@'a conflictos, en caso de que tengamos en nuestro espacio de trabajo la @'ultima versi@'on del m@'odulo del dep@'osito central. Para hacer dicha actualizaci@'on debemos realizar lo siguiente: @enumerate @item Seleccionar el o los archivos sobre los que desea realizar @dfn{commit}. @item Para actualizar el archivo en el dep@'osito central hay que ir a al menu @samp{Modify}, @samp{Commit Selection} (o simplemente @key{Control M}). @item En la pesta@~na @samp{Commit Settings}, en la secci@'on @samp{Enter Log Settings} indique la raz@'on del cambio, i.e. @kbd{Arreglo del est@'andar de codificaci@'on} @image{graficas/CommitArchivo,5cm} @end enumerate Esto actualiza su dep@'osito y ver@'a que su archivo aparece de nuevo con estatus de poder ser editado, adicionalmente cambia su versi@'on a la 1.2. @node Actualizacion en caso de conflictos de versiones, , Actualizacion en ausencia de conflictos de versiones, Actualizacion del deposito central @subsection Actualizaci@'on en caso de conflictos de versiones. @cindex @command{checkin} @cindex @command{commit} @cindex conflictos de versiones Suponga que se desea hacer @dfn{commit} de su archivo, sin embargo otra persona antes de que cambio fuera enviado, ha hecho @dfn{checkin}, creando una nueva versi@'on dejando a los cambios que usted ha hecho sobre su archivo desactualizados. En caso de que desee intente hacer @dfn{commit} de este archivo, obtendr@'a el siguiente error: @example @samp{Up to date checked failed for ListView.java} @end example @image{ErrorHaciendoCommit,10cm} Por ende tendr@'a que realizar el siguiente conjunto de pasos: @enumerate @item Tiene que actualizar el archivo de su espacio de trabajo, para lo cu@'al en el men@'u @samp{Modify, Update Selection}, de Aceptar. ia su versio'n a la 1.2. @item El archivo se marca con una C indicando que no hubo problemas en el mezclado de dichos archivos. @item 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. @image{graficas/EditarArchivoUpdate, 10cm} @item Grabe dicho archivo y ahora puede hacer @dfn{commit} de @'este creando una nueva versi@'on. @end enumerate @node Uso de los "tags", Salida de la sesion, Actualizacion del deposito central, Configuracion en el cliente @section Uso de los @dfn{tags}. @cindex @command{tag} Mediante un @dfn{tag} se puede nombrar un conjunto de archivos relacionados atrav@'es de un nombre espec@ia{}fico, facilitando el uso de @'estos. Usando dicho nombre se pueden extraer posteriormente este conjunto de archivos. A continuaci@'on describimos las actividades relacionadas con el uso y creaci@'on de dichos @dfn{tags}. @menu * Creacion de los "tags":: * Observacion de los "tags" disponibles:: * Extraccion de los archivos asociados con un "tag":: @end menu @node Creacion de los "tags", Observacion de los "tags" disponibles, Uso de los "tags", Uso de los "tags" @subsection Creaci@'on de los @dfn{tags}. @cindex @command{tag}, creaci@'on Siga los siguientes pasos: @enumerate @item Seleccione los archivos y/o directorios relacionados, en nuestro caso los archivos fuente del programa, es decir todos los @file{.java}. @c @image{} @item En el men@'u @samp{Create}, seleccione la opci@'on @samp{Create a tag by module}. @item En la pest@~na @samp{Create tag settings}, en la secci@'on @samp{Enter the tag name and which module to tag} entre en el campo @samp{New Tag Name} el nombre del tag deseado (en nuestro caso es @kbd{CodigoFuente}) y en el campo @samp{Module to tag} el nombre del m@'odulo actual, es decir @kbd{mvc}. @end enumerate @node Observacion de los "tags" disponibles, Extraccion de los archivos asociados con un "tag", Creacion de los "tags", Uso de los "tags" @subsection Observaci@'on de los @dfn{tags} disponibles. @cindex @command{tag}'s de un archivo Para ver los tags que existen sobre un archivo debe hacer lo siguiente @enumerate @item Seleccione el archivo del cu@'al desea ver los @dfn{tags} asociados, en nuestro caso escogeremos @file{ListView.java} @item En el men@'u @samp{Query}, seleccione la opci@'on @samp{Graph Selection} (@key{Ctrl-G}) @item Al salir una ventana, simplemente presione aceptar. @end enumerate @c @image{} @node Extraccion de los archivos asociados con un "tag", , Observacion de los "tags" disponibles, Uso de los "tags" @subsection Extracci@'on de los archivos asociados con un @dfn{tag} @cindex @command{tag}, extracci@'on de archivos Para crear un espacio de trabajo con archivos asociados a un @command{tag} debe hacer lo siguiente: @enumerate @item En la pesta@~na @samp{Checkout Settings}, en el campo @samp{Enter the module name and path on the server}, coloque el nombre del m@'odulo (en nuestro caso @kbd{mvc}). @item En la pesta@~na @samp{Checkout Settings}, en el campo @samp{Local folter to checkout to}, d@'e el nombre del directorio donde desea extraer los archivos, por ejemplo @file{c:\temp\CodigofuenteMVC}. @item En la pesta@~na @samp{Checkout Options}, en la secci@'on @samp{Checkout Sticky Options}, en el campo @samp{By Revision/Tag/Branch} selecione o escriba el nombre del tag. @item Por @'ultimo presione en aceptar. @end enumerate @node Salida de la sesion, , Uso de los "tags", Configuracion en el cliente @section Salida de la sesi@'on. @cindex @command{logout} @cindex salida de la sesi@'on Por @'ultimo no olvide salirse de la sesi@'on de @file{wincvs} reci@'en abierta para ello en el men@'u @samp{Admin} de la opci@'on @samp{logout} @node Indice de conceptos, , Configuracion en el cliente, Top @comment node-name, next, previous, up @unnumbered @'Indice de conceptos @printindex cp @bye .