50
WinCvs Version 1.1 Guía del Usuario Don Harper June 1, 1999 Traducido al castellano por Enrique Castilla, Oct-2000.

wincvs11es.pdf

Embed Size (px)

DESCRIPTION

wincvs11es.pdf

Citation preview

Page 1: wincvs11es.pdf

WinCvs Version 11

Guiacutea del Usuario

Don Harper

June 1 1999

Traducido al castellano por Enrique Castilla Oct-2000

2

Copyright 1999 Don Harper

Permission is granted to make and distribute verbatim copies of this manual provided the copyright noticeand this permission notice are preserved on all copies

Permission is granted to copy and distribute modified version of this manual under the conditions forverbatim copying provided also that the entire resulting derived work is distributed under the terms of apermission notice identical to this one

Copyright 2000 Enrique Castilla y Don Harper

Se le autoriza a realizar y distribuir copias literales de este manual siempre y cuando mantenga el mensajede Copyright y este mensaje de autorizacioacuten en todas las copias

Se le autoriza a copiar y distribuir versiones modificadas de este manual bajo las condiciones del parrafoanterior siempre y cuando el resultado completo de la modificacioacuten tambieacuten sea distribuido bajo losteacuterminos de un mensaje de autorizacioacuten ideacutentico a este

3

Seccion 1 ndash Introduccioacuten 5Seccioacuten 2 ndash Instrucciones de Instalacioacuten 5Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs 7

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area) 7

32 Estableciendo las preferencias (Preferences) en WinCvs 8321 Panel de preferencias General 9322 Panel de preferencias Globals 9323 Panel de preferencias Ports 10324 Panel de preferencias Proxy 11325 Panel de preferencias WinCvs 11

33 Haciendo log in en el servidor 12

34 Haciendo Check Out de un moacutedulo 13

35 Actualizando (update) un aacuterea de trabajo 16

36 Editando un fichero 18

37 Visualizando las diferencias antes de hacer commit (modo texto) 19

38 Visualizando las diferencias antes de hacer commit (modo graacutefico) 20

39 Haciendo commit con un fichero o una carpeta 23

310 Antildeadiendo ficheros o carpetas al repositorio 243101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add 243102 Antildeadir ficheros o carpetas usando import 27

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente 2731022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo 31

311 Coordinacioacuten entre varios programadores 343111 Como funciona el update y el modelo Unreserved Checkout 343112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout 38

Seccioacuten 4 ndash Comandos Administrativos 4041 Editar el fichero administrativo modules 40

42 Acciones a realizar cuando el repositorio queda bloqueado 41

43 Gestioacuten de versiones 42431 Etiquetar una versioacuten de produccioacuten 43432 Corregir errores despueacutes de generar una versioacuten de produccioacuten 45

4321 Crear el area de trabajo 454322 Crear una bifurcacioacuten 484323 Etiquetar la nueva versioacuten de produccioacuten 50

4

5

Seccion 1 ndash Introduccioacuten

CVS es el acroacutenimo de Concurrent Versions System Es un sistema de control de versiones cuyo desarrollocomenzo en 1986 y en el que han participado muchas personas Es un software de dominio publicoActualmente quien mantiene CVS es Cyclic Software en Washington DC y hay montones de informacionen su sitio web wwwcycliccom

El principal ldquoproblemardquo de CVS es que usa una interface a base de comandos en linea Ya que la mayoriade los desarrolladores prefieren utilizar una bonita interfaz grafica de usuario varios grupos a lo largo yancho del mundo han desarrollado interfaces graficas de usuario para el nucleo de CVS De entre estasinterfaces graficas la mejor y disponible para Windows NT98 es WinCvs desarrollada y mantenida por ungrupo de gente a lo largo del mundo Se puede encontrar informacion sobre WinCvs en su sitio web enwwwwincvsorg

Notese que las versiones de cvs y WinCvs documentadas aquiacute difieren un poco de las versiones standardLa diferencia mas visible se puede apreciar en los ejemplos del comando import Un parche no oficialllamado Main Branch Import ha sido aplicado para permitir la importacion de ficheros directamente altrunk en lugar de una bifurcacion de vendedor El parche puede encontrarse enhttpwwwcycliccomcvsdev-trunk-importtxt

Este documento describe la instalacion de WinCvs y explica algunos de los conocimientos basicosnecesarios para empezar a usar CVS Por favor dirige todas las preguntas o problemas sobre este manual aDon Harper (usa los grupos de noticias para cuestiones sobre cvs o el mismo WinCvs[mailtodonharperearthlinknet]

Noacutetese tambieacuten que este documento asume que la maacutequina es Windows NT sin embargo para los usuariosde Windows 98 deberiacutea ser tambien uacutetil aunque haya unos pocos detalles diferentes

Seccioacuten 2 ndash Instrucciones de Instalacioacuten

La versioacuten actual de WinCvs es la 11 que esta todavia en fase de pruebas beta y esta disposible en el sitioweb de WinCvs en wwwwincvsorg Para usar la interface de lineas de comandos embebida en elproducto debe obtener TclTk 811 en wwwscripticscom

Para empezar la instalacion de WinCvs desempaquete en un directorio temporal el fichero zip descargadoEjecute el programa de instalacioacuten (Setupexe) Instale el software en el directorio Archivos deProgramaGNUWinCvs 11 en un disco local (preferentemente C)

Para instalar TckTk ejecute el fichero tcl811exe descargado de scripticscom Instale en el directorio pordefecto que sugiera el programa de instalacion

Si quiere un editor realmente bueno instale EmEditor (eme200eiexe) Es un producto shareware por loque tendraacute que abonar los $25 que cuesta si despues quiere seguir usaacutendolo Hay mas informacioacuten sobreEmEditor y su sistema de licencia en la webhttpwwwniftynejpforumfemsoftindex-ehtm Tambien puede usar cualquierotro editor que prefiera

Si quiere una utilidad de comparacioacuten de ficheros gratuita instale ExamDiff (examdf16zip) Si quiere mascaracteristicas instale la version shareware ExamDiff Pro (edpro21czip) en lugar de ExamDiff ExamDiffPro cuesta $25 la licencia Mas informacion sobre ExamDiff y ExamDiff Pro estaacute disponible en el sitioweb httpwwwnisnevichcom

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 2: wincvs11es.pdf

2

Copyright 1999 Don Harper

Permission is granted to make and distribute verbatim copies of this manual provided the copyright noticeand this permission notice are preserved on all copies

Permission is granted to copy and distribute modified version of this manual under the conditions forverbatim copying provided also that the entire resulting derived work is distributed under the terms of apermission notice identical to this one

Copyright 2000 Enrique Castilla y Don Harper

Se le autoriza a realizar y distribuir copias literales de este manual siempre y cuando mantenga el mensajede Copyright y este mensaje de autorizacioacuten en todas las copias

Se le autoriza a copiar y distribuir versiones modificadas de este manual bajo las condiciones del parrafoanterior siempre y cuando el resultado completo de la modificacioacuten tambieacuten sea distribuido bajo losteacuterminos de un mensaje de autorizacioacuten ideacutentico a este

3

Seccion 1 ndash Introduccioacuten 5Seccioacuten 2 ndash Instrucciones de Instalacioacuten 5Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs 7

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area) 7

32 Estableciendo las preferencias (Preferences) en WinCvs 8321 Panel de preferencias General 9322 Panel de preferencias Globals 9323 Panel de preferencias Ports 10324 Panel de preferencias Proxy 11325 Panel de preferencias WinCvs 11

33 Haciendo log in en el servidor 12

34 Haciendo Check Out de un moacutedulo 13

35 Actualizando (update) un aacuterea de trabajo 16

36 Editando un fichero 18

37 Visualizando las diferencias antes de hacer commit (modo texto) 19

38 Visualizando las diferencias antes de hacer commit (modo graacutefico) 20

39 Haciendo commit con un fichero o una carpeta 23

310 Antildeadiendo ficheros o carpetas al repositorio 243101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add 243102 Antildeadir ficheros o carpetas usando import 27

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente 2731022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo 31

311 Coordinacioacuten entre varios programadores 343111 Como funciona el update y el modelo Unreserved Checkout 343112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout 38

Seccioacuten 4 ndash Comandos Administrativos 4041 Editar el fichero administrativo modules 40

42 Acciones a realizar cuando el repositorio queda bloqueado 41

43 Gestioacuten de versiones 42431 Etiquetar una versioacuten de produccioacuten 43432 Corregir errores despueacutes de generar una versioacuten de produccioacuten 45

4321 Crear el area de trabajo 454322 Crear una bifurcacioacuten 484323 Etiquetar la nueva versioacuten de produccioacuten 50

4

5

Seccion 1 ndash Introduccioacuten

CVS es el acroacutenimo de Concurrent Versions System Es un sistema de control de versiones cuyo desarrollocomenzo en 1986 y en el que han participado muchas personas Es un software de dominio publicoActualmente quien mantiene CVS es Cyclic Software en Washington DC y hay montones de informacionen su sitio web wwwcycliccom

El principal ldquoproblemardquo de CVS es que usa una interface a base de comandos en linea Ya que la mayoriade los desarrolladores prefieren utilizar una bonita interfaz grafica de usuario varios grupos a lo largo yancho del mundo han desarrollado interfaces graficas de usuario para el nucleo de CVS De entre estasinterfaces graficas la mejor y disponible para Windows NT98 es WinCvs desarrollada y mantenida por ungrupo de gente a lo largo del mundo Se puede encontrar informacion sobre WinCvs en su sitio web enwwwwincvsorg

Notese que las versiones de cvs y WinCvs documentadas aquiacute difieren un poco de las versiones standardLa diferencia mas visible se puede apreciar en los ejemplos del comando import Un parche no oficialllamado Main Branch Import ha sido aplicado para permitir la importacion de ficheros directamente altrunk en lugar de una bifurcacion de vendedor El parche puede encontrarse enhttpwwwcycliccomcvsdev-trunk-importtxt

Este documento describe la instalacion de WinCvs y explica algunos de los conocimientos basicosnecesarios para empezar a usar CVS Por favor dirige todas las preguntas o problemas sobre este manual aDon Harper (usa los grupos de noticias para cuestiones sobre cvs o el mismo WinCvs[mailtodonharperearthlinknet]

Noacutetese tambieacuten que este documento asume que la maacutequina es Windows NT sin embargo para los usuariosde Windows 98 deberiacutea ser tambien uacutetil aunque haya unos pocos detalles diferentes

Seccioacuten 2 ndash Instrucciones de Instalacioacuten

La versioacuten actual de WinCvs es la 11 que esta todavia en fase de pruebas beta y esta disposible en el sitioweb de WinCvs en wwwwincvsorg Para usar la interface de lineas de comandos embebida en elproducto debe obtener TclTk 811 en wwwscripticscom

Para empezar la instalacion de WinCvs desempaquete en un directorio temporal el fichero zip descargadoEjecute el programa de instalacioacuten (Setupexe) Instale el software en el directorio Archivos deProgramaGNUWinCvs 11 en un disco local (preferentemente C)

Para instalar TckTk ejecute el fichero tcl811exe descargado de scripticscom Instale en el directorio pordefecto que sugiera el programa de instalacion

Si quiere un editor realmente bueno instale EmEditor (eme200eiexe) Es un producto shareware por loque tendraacute que abonar los $25 que cuesta si despues quiere seguir usaacutendolo Hay mas informacioacuten sobreEmEditor y su sistema de licencia en la webhttpwwwniftynejpforumfemsoftindex-ehtm Tambien puede usar cualquierotro editor que prefiera

Si quiere una utilidad de comparacioacuten de ficheros gratuita instale ExamDiff (examdf16zip) Si quiere mascaracteristicas instale la version shareware ExamDiff Pro (edpro21czip) en lugar de ExamDiff ExamDiffPro cuesta $25 la licencia Mas informacion sobre ExamDiff y ExamDiff Pro estaacute disponible en el sitioweb httpwwwnisnevichcom

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 3: wincvs11es.pdf

3

Seccion 1 ndash Introduccioacuten 5Seccioacuten 2 ndash Instrucciones de Instalacioacuten 5Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs 7

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area) 7

32 Estableciendo las preferencias (Preferences) en WinCvs 8321 Panel de preferencias General 9322 Panel de preferencias Globals 9323 Panel de preferencias Ports 10324 Panel de preferencias Proxy 11325 Panel de preferencias WinCvs 11

33 Haciendo log in en el servidor 12

34 Haciendo Check Out de un moacutedulo 13

35 Actualizando (update) un aacuterea de trabajo 16

36 Editando un fichero 18

37 Visualizando las diferencias antes de hacer commit (modo texto) 19

38 Visualizando las diferencias antes de hacer commit (modo graacutefico) 20

39 Haciendo commit con un fichero o una carpeta 23

310 Antildeadiendo ficheros o carpetas al repositorio 243101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add 243102 Antildeadir ficheros o carpetas usando import 27

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente 2731022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo 31

311 Coordinacioacuten entre varios programadores 343111 Como funciona el update y el modelo Unreserved Checkout 343112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout 38

Seccioacuten 4 ndash Comandos Administrativos 4041 Editar el fichero administrativo modules 40

42 Acciones a realizar cuando el repositorio queda bloqueado 41

43 Gestioacuten de versiones 42431 Etiquetar una versioacuten de produccioacuten 43432 Corregir errores despueacutes de generar una versioacuten de produccioacuten 45

4321 Crear el area de trabajo 454322 Crear una bifurcacioacuten 484323 Etiquetar la nueva versioacuten de produccioacuten 50

4

5

Seccion 1 ndash Introduccioacuten

CVS es el acroacutenimo de Concurrent Versions System Es un sistema de control de versiones cuyo desarrollocomenzo en 1986 y en el que han participado muchas personas Es un software de dominio publicoActualmente quien mantiene CVS es Cyclic Software en Washington DC y hay montones de informacionen su sitio web wwwcycliccom

El principal ldquoproblemardquo de CVS es que usa una interface a base de comandos en linea Ya que la mayoriade los desarrolladores prefieren utilizar una bonita interfaz grafica de usuario varios grupos a lo largo yancho del mundo han desarrollado interfaces graficas de usuario para el nucleo de CVS De entre estasinterfaces graficas la mejor y disponible para Windows NT98 es WinCvs desarrollada y mantenida por ungrupo de gente a lo largo del mundo Se puede encontrar informacion sobre WinCvs en su sitio web enwwwwincvsorg

Notese que las versiones de cvs y WinCvs documentadas aquiacute difieren un poco de las versiones standardLa diferencia mas visible se puede apreciar en los ejemplos del comando import Un parche no oficialllamado Main Branch Import ha sido aplicado para permitir la importacion de ficheros directamente altrunk en lugar de una bifurcacion de vendedor El parche puede encontrarse enhttpwwwcycliccomcvsdev-trunk-importtxt

Este documento describe la instalacion de WinCvs y explica algunos de los conocimientos basicosnecesarios para empezar a usar CVS Por favor dirige todas las preguntas o problemas sobre este manual aDon Harper (usa los grupos de noticias para cuestiones sobre cvs o el mismo WinCvs[mailtodonharperearthlinknet]

Noacutetese tambieacuten que este documento asume que la maacutequina es Windows NT sin embargo para los usuariosde Windows 98 deberiacutea ser tambien uacutetil aunque haya unos pocos detalles diferentes

Seccioacuten 2 ndash Instrucciones de Instalacioacuten

La versioacuten actual de WinCvs es la 11 que esta todavia en fase de pruebas beta y esta disposible en el sitioweb de WinCvs en wwwwincvsorg Para usar la interface de lineas de comandos embebida en elproducto debe obtener TclTk 811 en wwwscripticscom

Para empezar la instalacion de WinCvs desempaquete en un directorio temporal el fichero zip descargadoEjecute el programa de instalacioacuten (Setupexe) Instale el software en el directorio Archivos deProgramaGNUWinCvs 11 en un disco local (preferentemente C)

Para instalar TckTk ejecute el fichero tcl811exe descargado de scripticscom Instale en el directorio pordefecto que sugiera el programa de instalacion

Si quiere un editor realmente bueno instale EmEditor (eme200eiexe) Es un producto shareware por loque tendraacute que abonar los $25 que cuesta si despues quiere seguir usaacutendolo Hay mas informacioacuten sobreEmEditor y su sistema de licencia en la webhttpwwwniftynejpforumfemsoftindex-ehtm Tambien puede usar cualquierotro editor que prefiera

Si quiere una utilidad de comparacioacuten de ficheros gratuita instale ExamDiff (examdf16zip) Si quiere mascaracteristicas instale la version shareware ExamDiff Pro (edpro21czip) en lugar de ExamDiff ExamDiffPro cuesta $25 la licencia Mas informacion sobre ExamDiff y ExamDiff Pro estaacute disponible en el sitioweb httpwwwnisnevichcom

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 4: wincvs11es.pdf

4

5

Seccion 1 ndash Introduccioacuten

CVS es el acroacutenimo de Concurrent Versions System Es un sistema de control de versiones cuyo desarrollocomenzo en 1986 y en el que han participado muchas personas Es un software de dominio publicoActualmente quien mantiene CVS es Cyclic Software en Washington DC y hay montones de informacionen su sitio web wwwcycliccom

El principal ldquoproblemardquo de CVS es que usa una interface a base de comandos en linea Ya que la mayoriade los desarrolladores prefieren utilizar una bonita interfaz grafica de usuario varios grupos a lo largo yancho del mundo han desarrollado interfaces graficas de usuario para el nucleo de CVS De entre estasinterfaces graficas la mejor y disponible para Windows NT98 es WinCvs desarrollada y mantenida por ungrupo de gente a lo largo del mundo Se puede encontrar informacion sobre WinCvs en su sitio web enwwwwincvsorg

Notese que las versiones de cvs y WinCvs documentadas aquiacute difieren un poco de las versiones standardLa diferencia mas visible se puede apreciar en los ejemplos del comando import Un parche no oficialllamado Main Branch Import ha sido aplicado para permitir la importacion de ficheros directamente altrunk en lugar de una bifurcacion de vendedor El parche puede encontrarse enhttpwwwcycliccomcvsdev-trunk-importtxt

Este documento describe la instalacion de WinCvs y explica algunos de los conocimientos basicosnecesarios para empezar a usar CVS Por favor dirige todas las preguntas o problemas sobre este manual aDon Harper (usa los grupos de noticias para cuestiones sobre cvs o el mismo WinCvs[mailtodonharperearthlinknet]

Noacutetese tambieacuten que este documento asume que la maacutequina es Windows NT sin embargo para los usuariosde Windows 98 deberiacutea ser tambien uacutetil aunque haya unos pocos detalles diferentes

Seccioacuten 2 ndash Instrucciones de Instalacioacuten

La versioacuten actual de WinCvs es la 11 que esta todavia en fase de pruebas beta y esta disposible en el sitioweb de WinCvs en wwwwincvsorg Para usar la interface de lineas de comandos embebida en elproducto debe obtener TclTk 811 en wwwscripticscom

Para empezar la instalacion de WinCvs desempaquete en un directorio temporal el fichero zip descargadoEjecute el programa de instalacioacuten (Setupexe) Instale el software en el directorio Archivos deProgramaGNUWinCvs 11 en un disco local (preferentemente C)

Para instalar TckTk ejecute el fichero tcl811exe descargado de scripticscom Instale en el directorio pordefecto que sugiera el programa de instalacion

Si quiere un editor realmente bueno instale EmEditor (eme200eiexe) Es un producto shareware por loque tendraacute que abonar los $25 que cuesta si despues quiere seguir usaacutendolo Hay mas informacioacuten sobreEmEditor y su sistema de licencia en la webhttpwwwniftynejpforumfemsoftindex-ehtm Tambien puede usar cualquierotro editor que prefiera

Si quiere una utilidad de comparacioacuten de ficheros gratuita instale ExamDiff (examdf16zip) Si quiere mascaracteristicas instale la version shareware ExamDiff Pro (edpro21czip) en lugar de ExamDiff ExamDiffPro cuesta $25 la licencia Mas informacion sobre ExamDiff y ExamDiff Pro estaacute disponible en el sitioweb httpwwwnisnevichcom

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 5: wincvs11es.pdf

5

Seccion 1 ndash Introduccioacuten

CVS es el acroacutenimo de Concurrent Versions System Es un sistema de control de versiones cuyo desarrollocomenzo en 1986 y en el que han participado muchas personas Es un software de dominio publicoActualmente quien mantiene CVS es Cyclic Software en Washington DC y hay montones de informacionen su sitio web wwwcycliccom

El principal ldquoproblemardquo de CVS es que usa una interface a base de comandos en linea Ya que la mayoriade los desarrolladores prefieren utilizar una bonita interfaz grafica de usuario varios grupos a lo largo yancho del mundo han desarrollado interfaces graficas de usuario para el nucleo de CVS De entre estasinterfaces graficas la mejor y disponible para Windows NT98 es WinCvs desarrollada y mantenida por ungrupo de gente a lo largo del mundo Se puede encontrar informacion sobre WinCvs en su sitio web enwwwwincvsorg

Notese que las versiones de cvs y WinCvs documentadas aquiacute difieren un poco de las versiones standardLa diferencia mas visible se puede apreciar en los ejemplos del comando import Un parche no oficialllamado Main Branch Import ha sido aplicado para permitir la importacion de ficheros directamente altrunk en lugar de una bifurcacion de vendedor El parche puede encontrarse enhttpwwwcycliccomcvsdev-trunk-importtxt

Este documento describe la instalacion de WinCvs y explica algunos de los conocimientos basicosnecesarios para empezar a usar CVS Por favor dirige todas las preguntas o problemas sobre este manual aDon Harper (usa los grupos de noticias para cuestiones sobre cvs o el mismo WinCvs[mailtodonharperearthlinknet]

Noacutetese tambieacuten que este documento asume que la maacutequina es Windows NT sin embargo para los usuariosde Windows 98 deberiacutea ser tambien uacutetil aunque haya unos pocos detalles diferentes

Seccioacuten 2 ndash Instrucciones de Instalacioacuten

La versioacuten actual de WinCvs es la 11 que esta todavia en fase de pruebas beta y esta disposible en el sitioweb de WinCvs en wwwwincvsorg Para usar la interface de lineas de comandos embebida en elproducto debe obtener TclTk 811 en wwwscripticscom

Para empezar la instalacion de WinCvs desempaquete en un directorio temporal el fichero zip descargadoEjecute el programa de instalacioacuten (Setupexe) Instale el software en el directorio Archivos deProgramaGNUWinCvs 11 en un disco local (preferentemente C)

Para instalar TckTk ejecute el fichero tcl811exe descargado de scripticscom Instale en el directorio pordefecto que sugiera el programa de instalacion

Si quiere un editor realmente bueno instale EmEditor (eme200eiexe) Es un producto shareware por loque tendraacute que abonar los $25 que cuesta si despues quiere seguir usaacutendolo Hay mas informacioacuten sobreEmEditor y su sistema de licencia en la webhttpwwwniftynejpforumfemsoftindex-ehtm Tambien puede usar cualquierotro editor que prefiera

Si quiere una utilidad de comparacioacuten de ficheros gratuita instale ExamDiff (examdf16zip) Si quiere mascaracteristicas instale la version shareware ExamDiff Pro (edpro21czip) en lugar de ExamDiff ExamDiffPro cuesta $25 la licencia Mas informacion sobre ExamDiff y ExamDiff Pro estaacute disponible en el sitioweb httpwwwnisnevichcom

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 6: wincvs11es.pdf

6

WinCvs se antildeadiraacute una entrada en el Menuacute Inicio pero si lo desea puede crear ademas un acceso directo aArchivos de ProgramaGNUWinCvs 11wincvsexe en el escritorio

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 7: wincvs11es.pdf

7

Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs

31 Estableciendo la Carpeta Raiacutez del Area de Trabajo (Work Area)

Antes de ejecutar WinCvs cree una carpeta que seraacute la raiacutez de su area de trabajo en local Por supuestopuede manejar multiples areas de trabajo con WinCvs pero se le haraacute mas faacutecil el seguir estas instruccionessi crea primero su raiacutez del area de trabajo

Cuando ejecute WinCvs lo primero que veraacute es la pantalla principal del browser En este ejemplo se ve unarea de trabajo seleccionada como actual por lo cual lo que muestra el browser difiere de lo que usted veraacutecuando ejecute WinCvs por vez primera

Lo primero que deberiacutea hacer es cambiar la carpeta raiz del browser a la carpeta que usaraacute como raiz de suarea de trabajo La raiz del browser se puede cambiar tanto desde el menuacute Cvs Folders-gtMacros folder-gtChange Root como desde el icono de los ldquobinocularesrdquo en la barra de herramientas

En ambos casos se abriraacute un panel donde puede seleccionar la carpeta a abrir con el browser Localice lacarpeta que desee usar como raiz de su area de trabajo y haga doble-click en ella para ver el icono decarpeta abierta Si solamente selecciona la carpeta con un solo click seleccionaraacute la carpeta padre en lugarde la deseada Esto es una caracteriacutestica no deseada (bug) de todos los comandos de WinCvs que usan estaforma de seleccionar carpetas

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 8: wincvs11es.pdf

8

En el siguiente ejemplo la raiz del area de trabajo se establecera a EWork Noacutetese que la carpeta ldquoWorkrdquoesta seleccionada y que muestra el icono de carpeta abierta

32 Estableciendo las preferencias (Preferences) en WinCvs

Abra el panel de preferencias de WinCvs seleccionando Cvs Admin-gtPreferences en el menuacute principalComo se ve hay cinco paneles de preferencias en WinCvs El panel General es el mas importante y el quese usa con mas frecuencia

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 9: wincvs11es.pdf

9

321 Panel de preferencias General

Hay tres campos en el panel de preferencias General

Establezca el CVSROOT a cualquier cosa similar al ejemplo de mas arribapserverdonjupiterenvy1cvs

En este ejemplo don es el nombre de usuario en el dominio local que seraacute usado para acceder al repositorioenvy1cvs en el servidor jupiter NOTA debe haber una entrada enCWINNTsystem32driversetcHosts definiendo la direccioacuten IP del servidor (jupiter en este caso)nnnnnnnnnnnn jupiter

Establezca el campo Authentication a ldquopasswdrdquo file on the cvs server Establezca el campo Use version aUse cvs 110

322 Panel de preferencias GlobalsEstablezca las opciones del panel de preferencias Globals como se muestra a continuacion a no ser queeste seguro de lo que estaacute haciendo

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 10: wincvs11es.pdf

10

323 Panel de preferencias Ports

Hay cinco campos en el panel de preferencias Ports

Normalmente se usan los valores por defecto de estos campos

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 11: wincvs11es.pdf

11

324 Panel de preferencias Proxy

Hay dos campos en el panel de preferencias Proxy

Este panel es necesario para utilizar cvs a traves de un servidor proxy

325 Panel de preferencias WinCvs

Hay tres cosas que establecer en el panel de preferencias WinCvs

Establezca el program used to open files a su editor favorito WinCvs ejecutara este programa cuando hagadoble-click en cualquir fichero mostrado en el browser que no tenga un tipo de fichero asociado enWindows

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 12: wincvs11es.pdf

12

Si quiere usar un programa para ver las diferencias entre ficheros graficamente marque la casilla y use elbotoacuten para localizar su programa favorito que realice esta tarea Notese que por alguna razon WinCvs soloejecuta el programa seleccionado cuando se ejecuta diff desde el modo ldquographrdquo (grafico) El modo ldquographrdquose explicara en una seccion posterior

Establezca HOME folder apuntando a una carpeta donde CVS guardaraacute las informaciones del username ypassword encriptado Esta puede ser la misma carpeta con la instalacion de CVS (Archivos deProgramaGNUWinCvs 11) o su carpeta ldquohomerdquo si tiene una en su entorno Windows NT Si especificaeste directorio separadamente del area de trabajo podra antildeadir modificar o borrar areas de trabajosolamente con uncomando de login

33 Haciendo log in en el servidor

Antes de que cvs pueda ejecutar ninguna operacioacuten sobre ficheros el usuario debe hacer log in en cvsHaga log in en cvs seleccionando Cvs Admin-gtLoginhellip en el menu principal Se le solicitaraacute unapassword (la password asociada a su usuario en el dominio local como se especificoacute en CVSROOT -Seccioacuten 321)

Introduzca su password y haga click en el botoacuten OK Si pudo hacer log in sin problemas vera un textosimilar al siguiente en la ventana de status

cvs -q login(Logging in to donnautilus)

CVS exited normally with code 0

Si no pudo hacer log in y por tanto no pudo entrar en el servidor veraacute un texto similar al siguiente en laventana de status

cvs -q login(Logging in to donnautilus)cvs [login aborted] authorization failed server nautilus rejected access

CVS exited normally with code 1

Si intenta usar otros comandos de CVS antes de hacer log in en el servidor los comandos fallaraacuten y vera unsimilar a este en la ventana status

cvs import could not open EDoncvspass No such file or directorycvs [import aborted] use cvs login to log in first

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 13: wincvs11es.pdf

13

34 Haciendo Check Out de un moacutedulo

CVS organiza los repositorios en forma de moacutedulos Un modulo es una jerarquiacutea de carpetas y ficherosempezando en cualquier carpeta en la jerarquiacutea del repositorio Todo repositorio tiene un modulo llamadoCVSROOT que almacena los ficheros administrativos Es una buena praacutectica dejar que estos ficheros losmantenga un administrador Solo el administrador deberiacutea poder antildeadir nuevos moacutedulos al repositorio

Para hacer checkout de un modulo del repositorio al PC local hay que conocer el nombre del modulo Si noconoce el nombre del moacutedulo seleccione Cvs Admin-gtMacros admin-gtList the modules on the server en elmenuacute principal Este comando le mostraraacute la lista de modulos en la ventana de status de WinCvs

CVS exited normally with code 0

Core CoreEtchPM EtchPM

La primera entrada de cada liacutenea es el nombre del moacutedulo y la segunda el nombre del directorio raiz delmodulo respecto a la raiacutez del repositorio

Una vez que se conoce el nombre del modulo se puede hacer checkout del mismo para colocarlo en el arealocal de trabajo seleccionando Cvs Admin-gtCheckout modulehellip en el menuacute principal Se visualizaraacute unpanel para permitirle seleccionar la carpeta destino (area de trabajo local) Vaya a la carpeta deseada yhaga doble-click en ella para que se seleccione y se muestre el icono de carpeta abierta Si accidentalmenteselecciona la carpeta pero no hace doble click se haraacute el checkout del modulo en la carpeta padre En elejemplo siguiente se haraacute checkout del modulo en la carpeta Nautilus Test

Una vez que haya seleccionado la carpeta destino y haga click en el boton OK se visualizaraacute el panelCheckout settings Puede introducir el nombre del moacutedulo en el campo correspondiente (EtchPM en lafigura siguiente) Si es necesario la carpeta destino tambien puede ser modificada desde este panel

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 14: wincvs11es.pdf

14

Pulsando en OK en este momento haraacute checkout de la uacuteltima versioacuten del moacutedulo para la vifurcacioacutenprincipal (cvs se refiere a esta como el trunk)

Si se desea una versioacuten vifurcada (branched) o etiquetada (tagged) de un moacutedulo se puede especificar elnombre de la bifurcacioacuten (branch) o la etiqueta (tag) en el panel Checkout options

En el ejemplo anterior se haraacute checkout de la uacuteltima versioacuten de todos los ficheros del moacutedulo EtchPM de labifurcacioacuten (branch) Alliance_V14en lugar de hacerse checkout de la uacuteltima versioacuten de la bifurcacioacutenprincipal (trunk) Noacutetese que tambieacuten es posible seleccionar la la version para que se quiere hacer elcheckout especificando una fecha

Una vez que ha establecido el nombre del modulo y las demas opciones se haraacute checkout del moacutedulocuando se pulse el botoacuten OK El progreso y el resultado del checkout se pueden ver en la ventana de status

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 15: wincvs11es.pdf

15

cvs -q checkout EtchPM (in directory ENautilusTest)U EtchPMMakefileU EtchPMEtchPMMakefileU EtchPMEtchPMdataMakefileU EtchPMEtchPMdataA2EtchPMscriptU EtchPMEtchPMdataA2MakefileU EtchPMEtchPMdataA2AlarmsEtchPMalmdefU EtchPMsrctaskscU EtchPMsrctempctrlcU EtchPMsrcwat_cntrlc

CVS exited normally with code 0

Desafortunadamente no porque haya hecho checout de un moacutedulo apareceraacute este en el panel izquierdo delbrowser en la vista de carpetas Utilice la tecla F5 o el botoacuten derecho del ratoacuten (Reload View) paraactualizar el display o pulse en el icono Refresh View de la barra de herramientas

En el ejemplo siguiente se ha hecho checkout de 4 moacutedulos en el area de trabajo Nautilus Test y la carpetaCore esta seleccionada en la vista de carpetas en el panel izquierdo Las subcarpetas de Core son visiblesen la vista de ficheros en el panel de la derecha

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 16: wincvs11es.pdf

16

35 Actualizando (update) un aacuterea de trabajo

Una vez que se ha creado un area de trabajo los ficheros pueden pasar a estar desactualizados conformeotros desarrolladores hacen checkin de sus modificaciones desde sus propias areas de trabajo El comandoupdate de CVS permite que un area de trabajo sea actualizada a los uacuteltimos cambios que se hayanrealizados en los fuentes (los ultimos checkins realizados) Otro uso frecuente del comando update escambiar entre bifurcaciones (branches) y versiones etiquetadas (tagged version)

El comando update (aligual que otros muchos comandos de WinCvs) se puede invocar sobre una carpetaun fichero o una seleccioacuten (el conjunto de carpetas o ficheros que esteacuten seleccionados en ese momento)Por tanto al comando update se puede acceder desde los menuacutes Cvs Files Cvs Folders y SelectionsPosiblemente la forma maacutes comoda de actualizar (update) un fichero o carpeta es seleccionarlo con elbotoacuten derecho del ratoacuten lo cual hace que ademaacutes se visualice el menuacute Selections y todo ello con un soloclick de ratoacuten Si quiere usar para esto la barra de herramientas en ella tambien hay iconos para estas dosoperaciones

Actualizar carpeta (Update Folder)

and Actualizar seleccioacuten (Update Selection)

Independientemente de coacutemo se como se invoque el comando update se visualizaraacute el panel Updatesettings

La opcioacuten Do not recurse into sub-folders puede ser uacutetil para hacer update solamente sobre la carpetaseleccionada y no sobre todas sus subcarpetas (la recursioacuten es siempre la opcioacuten por defecto de cvs)

La opcioacuten Reset any sticky datetag-k options se usa para hacer update hacia atraacutes a la uacuteltima versioacuten delos ficheros en la bifurcacioacuten principal Durante el desarrollo se puede hacer update a una bifurcacioacuten

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 17: wincvs11es.pdf

17

(branch) a una etiqueta (tag) o por fecha y esto uacuteltimo significa obtener un area de trabajo actualizada a labifurcacioacuten principal Esto es lo que hace esta opcioacuten

La opcioacuten Create missing directories that exist in the repository es uacutetil para obtener los nuevos directoriosque han sido antildeadidos al repositorio desde que se hizo checkout del moacutedulo la vez anterior

Para hacer update a una bifurcacioacuten que no es la principal hacer update a una versioacuten etiquetada (taggedversion) o hacer update por fecha hay que usar el panel Sticky options En el siguiente ejemplo un area detrabajo que ya existe seria actualizada a la uacuteltima versioacuten de todos los ficheros de la bifurcacioacutenAlliance_V14

En el panel Merge options hay algunas opciones maacutes sofisticadas relacionadas con las mezclas (merge)Consulte el manual de cvs para maacutes informacioacuten sobre este panel

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 18: wincvs11es.pdf

18

36 Editando un fichero

Por defecto cuando se hace un checkout de un modulo o un update del aacuterea de trabajo los ficherosobtenidos son no modificables Para modificar un fichero hay que usar primero el comando edit de maneraque el fichero se marque como modificable En WinCvs un icono a la izquierda del nombre del fichero enla ventana del browser vista de ficheros indica el estado modificableno modificable del fichero

Los ficheros de solo lectura se indican con el icono

Los ficheros modificables se indican con

Para invocar el comando edit y hacer un fichero modificable seleccione el fichero y pulse el icono Editselection de la barra de herramientas

El comando edit tambien se puede ejecutar desde el menuacute emergente que se visualiza pulsando el botonderecho del reton opcioacuten Monitors selection-gtEdit selection o desde la opcion Selections-gtMonitorsselection-gtEdit selection pero usar la barra de herramientas es mas coacutemodo

Despueacutes de que el fichero ha sido marcado como modificable este puede ser modificado haciendo soloboble-click sobre el

Para volver a marcar el fichero como no modificable (es decir de solo lectura) usese el comando uneditdesde los menuacutes o la barra de herramientas

Despueacutes de modificar un fichero su icono en la ventana de vista de ficheros del browser se pondraacute en rojo yla columna status cambiaraacute a Mod File como se muestra en el siguiente ejemplo donde fue modificado elfichero applmainc

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 19: wincvs11es.pdf

19

37 Visualizar las diferencias antes de hacer commit (modo texto)

A menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacer commit de un fichero al repositorioEsta seccioacuten describe los pasos necesarios para comparar un fichero a la versioacuten que hay en el area detrabajo con la versioacuten actual del mismo que hay en el repositorio Las diferencias pueden verse tanto en elmodo texto estandar del comando diff en la ventana status como en modo graacutefico (para esto uacuteltimo esnecesario que haya establecido cual es el programa externo con el que veraacute las diferencias como se explicoacuteen la Seccioacuten 325) Esta seccioacuten se refiere al formato texto en que se visualizan las diferencias Vea lasiguiente seccioacuten (Seccioacuten 38) para un ejemplo del comando diff en modo graacutefico

El comando diff se puede ejecutar de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y utilice el menuacute Selections-gtDiffselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y use la opcioacuten Diff selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y use la barra de herramientas

Una vez que se invoca el comando diff se visualizaraacute el panel Diff settings

El panel Diff settings tiene varias opciones pero solo la primera opcioacuten tiene sentido en este ejemplo(porque lo que queremos hacer es comparar nuestra versioacuten contra la del repositorio) Aseguacuterese de queselecciona la primera opcioacuten como se muestra arriba y haga click en el botoacuten OK

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 20: wincvs11es.pdf

20

La versioacuten en formato texto de las diferencias entre ficheros (si las hay) se visualizaraacute ahora en la ventanade status como se muestra aquiacute

cvs -q diff applmainc (in directory ENautilusTestEtchPMsrc)Index applmainc===================================================================RCS file usrlocalcvs-testEtchPMsrcapplmaincvretrieving revision 11diff -r11 applmainc988993c988994lt int Metal9600PTX_installed = FALSElt int single_plane_transfer = FALSElt int chill_232_present = FALSElt int pump_232_present = FALSElt int lonwork_present = FALSElt int scrubber_232_present = FALSE---gt int Metal9600PTX_installed = TRUEgt int single_plane_transfer = TRUEgt int chill_232_present = TRUEgt int pump_232_present = TRUEgt int lonwork_present = TRUEgt int scrubber_232_present = TRUEgt int advanced_endpoint_installed = TRUE

CVS exited normally with code 1

El texto de la ventana de status de WinCvs puede ser seleccionado salvado a un fichero o impresosimplemente activando la ventana status (haciendo click en cualquier parte de ella) y usando los menuacutes Edity File Tambieacuten se puede borrar el texto de esta ventana con Edit-gtSelect All y Edit-gtCut (cortarlo)

38 Visualizando las diferencias antes de hacer commit (modo graacutefico)

Como se mencionoacute en la Seccioacuten 37 a menudo es uacutetil tener la precaucioacuten de ejecutar diff antes de hacercommit de un fichero al repositorio Esta seccioacuten describe los pasos necesarios para comparar la versioacuten deun fichero en el area de trabajo contra la versioacuten actual del mismo en el repositorio Las diferencias puedenverse tanto en el modo texto estandar del comando diff en la ventana status como en modo graacutefico (paraesto uacuteltimo es necesario que haya establecido cual es el programa externo con el que veraacute las diferenciascomo se explicoacute en la Seccioacuten 325) Esta seccioacuten se refiere al modo graacutefico en que se visualizan lasdiferencias Vea la anterior seccioacuten (Seccioacuten 37) para un ejemplo del comando diff en modo texto

En WinCvs el programa graacutefico que muestra las diferencias solo se puede usar desde el modo graph Elmodo graph de WinCvs muestra todas las versiones de un fichero en formato graacutefico El graacutefico puede sergenerado de cualquiera de estas tres formas

1) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten y el menuacute Selections-gtGraphselection

2) Seleccione el fichero usando el botoacuten derecho del ratoacuten y despues Graph selection

3) Seleccione el fichero usando el botoacuten izquierdo del ratoacuten despueacutes la barra de herramientas

Una vez que se ha invocado el modo graph se visualiza el panel Log settings

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 21: wincvs11es.pdf

21

Hay muchas opciones en los paneles Log settings que el usuario puede explorar cuando le sea necesarioutilizarlas En este ejemplo se ha seleccionado la opcioacuten Do not print tag names ya que puede ser unaopcioacuten usada con mucha frecuencia para evitar el que haya demasiada informacioacuten en el graacutefico que sevisualice despues Los nombres de etiquetas en cvs (tag names) se refieren a los nombres de bifurcaciones(que son uacutetiles de ver) pero tambien se refieren a las versiones etiquetadas (tagged versions) queprobablemente no les interesan a los desarrolladores

Una vez que haya seleccionado las opciones deseadas haga click en el botoacuten OK para visualizar el graacutefico

El graacutefico de este ejemplo muestra que para applmainc hay actualmente dos versiones en el repositorio

Para visualizar las diferencias entre la versioacuten del fichero en el area de trabajo y la versioacuten del fichero en elrepositorio (12) haga click primero en la versioacuten mas reciente del fichero en el repositorio como se

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 22: wincvs11es.pdf

22

muestra arriba Notese que en la mitad inferior de la ventana se visualiza informacioacuten acerca de la versioacutenseleccionada La informacion que se muestra es el autor la fecha-hora de modificacioacuten y el mensaje delog para la versioacuten seleccionada del fichero

Ahora puede visualizar las diferencias en modo graacutefico tanto desde el menuacute Graph usando Graph-gtDiffcomo desde la barra de herramientas del modo graph

El programa externo con el que visualizar las diferencias (vea como establecerlo en la seccioacuten 325) seejecutaraacute como se muestra en el siguiente ejemplo

Noacutetese que el programa externo usado en el ejemplo anterior para ver las diferencias (ExamDiff Pro) tienemuchas opciones incluida la posibilidad de configurar los colores ignorar los espacios enblanco etc(menuacute View-gtOptionshellip) Tambieacuten hay una opcioacuten para salvar las diferencias en formato UNIX (menuacuteFile-gtSave Unix Diff Filehellip )

Tenga cuidado al cerrar la ventana del modo graph despues de ver las diferencias o podriacutea acabar cerrandocompletamente el programa WinCvs Una forma mejor de usar WinCvs puede ser usar el modo Tile quese puede seleccionar con Window-gtTile

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 23: wincvs11es.pdf

23

39 Hacier commit con un fichero o una carpeta

Despues de que se hayan editado uno o mas ficheros sepuede hacer commit al repositorio con ficherosindividuales o con un arbol entero de carpetas usando el comando commit Se puede invocar el comandocommit de varias formas

1) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y seleccione la opcioacuten demenuacute Selections-gtCommit selection

2) Seleccione un fichero o carpeta con el botoacuten derecho del raton y despues use la opcioacutenCommit selection

3) Seleccione un fichero o carpeta con el botoacuten izquierdo del ratoacuten y despues use la barra deherramientas

Una vez que se ha invocado el comando commit se visualizaraacute el panel Commit settings

Teclee un mensaje de log y pulse el botoacuten OK para hacer commit de los cambios Si ha seleccionado parahacer commit una carpeta y no desea que tambieacuten se haga commit con sus subcarpetas marque la opcioacutenDo not recurse Los resultados de la operacioacuten de commit se visualizaraacuten en la ventana status como acontinuacioacuten

cvs -q commit -m Add new options for advanced endpoint applmainc (indirectory ENautilusTestEtchPMsrc)Checking in applmaincusrlocalcvs-testEtchPMsrcapplmaincv lt-- applmaincnew revision 12 previous revision 11done

CVS exited normally with code 0

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 24: wincvs11es.pdf

24

310 Antildeadir ficheros o carpetas al repositorio

Se puede antildeadir ficheros o carpetas al repositorio tanto con el comando add como con el comando importLos programadores deberiacutean normalmente usar el comando add para antildeadir ficheros o unas pocas carpetasHay solamente dos situaciones donde se deberiacutea usar el comando import

- Si los ficheros a crear requieren la creacioacuten de un nuevo moacutedulo (por ejemplo debido aque no existe previamente un moacutedulo para los mismos) En este caso se debe usar elcomando import Para mantener una determinada convencioacuten en la forma de nombrar losmoacutedulos es una buena idea dejar la tarea de creacion de modulos al administrador de cvsEl nuacutemero de moacutedulos en un repositorio tambien hay que controlarlo para evitarconfusionescierta homogeneidad en los nombres de los moacutedulos

- Si se desea antildeadir una jerarquiacutea de varios niveles a un moacutedulo que ya existe puede sertedioso antildeadir cada nivel manualmente WinCvs permite antildeadir todos los ficheros ysubcarpetas de una sola carpeta en una sola operacioacuten Realizando esta operacioacutenmanualmente habriacutea que repetirla para cada una de las subcarpetas hasta el final de lajerarquiacutea Ademaacutes los ficheros binarios habriacutea que antildeadirlos en una operacioacuten apartehaciendose la tarea considerablemente tediosa En esta situaciones en mucho mas faacutecilusar el comando import para importar la jerarquiacutea completa a una subcarpeta de unmoacutedulo existente Tambien es una buena idea utilizar al administrador de cvs o pedirleayuda cuando haya que importar ficheros de esta forma

Si el comando add le parece el maacutes apropiado (el caso frecuente) lea la Seccioacuten 3101 para maacutesinformacioacuten sobre el uso del comando add Si necesita usar el comando import lea la seccioacuten 3102 ocontacte con su administrador de cvs

3101 Antildeadir ficheros o carpetas (a un moacutedulo que ya existe) usando add

Antes de que se pueda antildeadir ficheros o carpetas a un moacutedulo debe existir un area de trabajo en la cual sehaya hecho checkout del moacutedulo en cuestion Entonces se pueden crear ficheros y carpetas dentro del areade trabajo mediante cualquiera de estos procedimientos

- crear una carpeta vacia desde el Windows NT Explorer- copiar los ficheros desde otro lugar- copiar una jerarquiacutea existente desde otro lugar (considere el uso de import Seccioacuten 3102)- crear los ficheros usando un editor de textos Microsoft Word o cualquier otra aplicacioacuten

Hay tres puntos importantes que hay que mencionar relacionados con el comando add

1) El comando add NUNCA es recursivo en cvs Esto significa que antildeadir una jerarquiacutea a unmoacutedulo ya existente es un proceso manual Hay que antildeadir manualmente los ficheros y lascarpetas para cada nivel de la jerarquiacutea Si necesita antildeadir una jerarquiacutea de mas de un nivel alrepositorio considere usar el comando import (Seccioacuten 3102)

2) Cvs necesita que se le diga que ficheros tratar como binarios y que ficheros tratar comoficheros de texto Si intenta antildeadir un fichero binario como fichero de texto WinCvs lodetectaraacute y se lo advertira pero es mas seguro antildeadir ficheros de texto con las versiones Addde los comandos de WinCvs y los ficheros binarios con las versiones AddBinary

3) El comando add solo antildeade el fichero al area de trabajo local Despues hay que usar elcomando commit (Seccioacuten 39) para antildeadir permanentemente los ficheros al repositorio

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 25: wincvs11es.pdf

25

Una vez que todos los ficheros y carpetas han sido colocados en el area de trabajo estamos preparados paraantildeadirlos al repositorio Como sucede con otros comandos WinCvs proporciona varias formas de invocarel comando add

1) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y despueacutes la opcioacuten demenuacute adecuada

Selections-gtAdd selection para ficheros de texto o carpetasSelections-gtAdd selection binary para ficheros binarios

2) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el botoacuten derechodel ratoacuten para abrir el menuacute Selections Escoja la opcioacuten de menuacute adecuada

Add selection para ficheros de texto o carpetasAdd selection binary para ficheros binarios

3) Seleccione los ficheros o carpetas usando el botoacuten izquierdo del ratoacuten y use el icono adecuadode la barra de herramientas

Add selected (para carpetas o ficheros de texto)

Add selected binary (para ficheros binarios)

Noacutetese que el fichero o carpeta seleccionado deberiacutea verse con un icono ldquordquo y estatus Unknown como semuestra a continuacioacuten

Una vez que el comando add (o add binary) se ha invocado el fichero o carpeta seraacute antildeadido al area detrabajo El estado de la operacioacuten add se puede ver en la ventana de status de WinCvs como se muestra acontinuacioacuten

cvs -q add Test_Driverc (in directory ENautilusTestCoredrivers)root server use root commit to add this file permanently

CVS exited normally with code 0

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 26: wincvs11es.pdf

26

Como se ha indicado el fichero o carpeta todavia requiere que se haga una operacioacuten de commit paraantildeadir realmente el fichero al repositorio

Despues de que un fichero es antildeadido al area de trabajo su status cambia a ldquoMod Filerdquo y la columnarevision (Rev) deberiacutea mostrarse como 0 como se muestra a continuacioacuten

El fichero(s) antildeadido puede puede ahora ser editado o hacer commit con eacutel contra el repositorio (Seccioacuten39)

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 27: wincvs11es.pdf

27

3102 Antildeadir ficheros o carpetas usando import

Este comando import de cvs permite antildeadir una jerarquiacutea existente de ficheros y carpetas al repositoriocreando un nuevo moacutedulo o antildeadiendolos a un moacutedulo ya existente Como se vio en la Seccioacuten 310 hayvarias razones para que este comando deba ser usado principalmente por un administrador de cvs

Al contrario que el comando add la jerarquiacutea que va a ser importada NO debe estar en el area de trabajolocal ants de ejecutarse el comando import Posteriormente una vez que el comando import se hayacompletado se puede hacer checkout de la jerarquiacutea completa al area de trabajo local

Hay dos ejemplos en esta seccioacuten En el primero (Seccioacuten 31021) una jerarquiacutea ya existente de ficherosde texto y binarios seraacute importada a un modulo ya existente en el repositorio En el segundo ejemplo(Seccioacuten 31022) una jerarquiacutea ya existente de ficheros de texto y binarios seraacute importada como un nuevomoacutedulo

31021 Importar una jerarquiacutea de ficheros a un moacutedulo ya existente

Al contrario que otros comandos WinCvs solo proporciona una forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute principal Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga boble-click en ella para ver el icono de la misma como unacarpeta abierta Si selecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todassus subcarpetas en lugar de la deseada Esto es un bug de todos los comandos de WinCvs que usan estaforma de seleccioacuten de carpetas En el ejemplo de arriba la carpeta Data-A6 esta seleccionada y su icono semuestra como una carpeta abierta

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 28: wincvs11es.pdf

28

Despueacutes de hacer doble-click sobre la carpeta a importar pulse OK En ese momento WinCvs examinaraacutela jerarquiacutea para determinar cuantos ficheros se van a importar y determinar el tipo de cada uno de ellos(texto o binario) A este proceso se le llama filtrado (filtering) y puede tomar alguacuten tiempo si la jerarquiacuteade ficheros es grande Dirante este tiempo la ventana de status de WinCvs visualizaraacute una linea por cadacarpeta examinada como se muestra a continuacioacuten

Filtering EData-A6Filtering EData-A6A2Filtering EData-A6A2AlarmsFiltering EData-A6A2dbFiltering EData-A6A2pgFiltering EData-A6A2RackFiltering EData-A6A2RecipeFiltering EData-A6A4Filtering EData-A6A4AlarmsFiltering EData-A6A4dbFiltering EData-A6A4dcpFiltering EData-A6A4pgFiltering EData-A6A4RackFiltering EData-A6A4Recipe

Cuando el proceso de filtrado se haya completado se visualizaraacute el panel Import filter con los resultadosdel proceso de filtrado Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar yel tipo que cvs le asignaraacute al antildeadir el fichero (TEXT o BINARY) En el siguiente ejemplo no hay erroresni warnings Sin embargo en algunos casos WinCvs puede encontrar un fichero con una extensioacuten quenormalmente se asigna a los ficheros de texto aunque el fichero en cuestioacuten aparezca como binario Loserrores pueden ser ignorados (de cualquir forma WinCvs haraacute normalmente lo correcto) o se puede usar elbotoacuten Edit para cambiar los valores que WinCvs haya establecido

Despueacutes de que haya revisado el panel Import filter pulse en Continue para empezar el proceso del import

Despues de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 29: wincvs11es.pdf

29

En este ejemplo se estaacute creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que lacarpeta Data-A6 importada no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio bajo la carpeta A6 Este ejemplo pretende mostrar que una carpeta puedeser importada con un nombre diferente Hay que introducir cuatro campos antes de iniciar el import

- Teclee el nombre de moacutedulo y path como se muestra arriba Notese que cvs REQUIERE quese usen caracteres ldquordquo (forward slash) para separar nombres de directorios Si se usase uncaraacutecter ldquordquo (backslash) se creariacutea un nuevo moacutedulo en la raiz del repositorio llamadoEtchPMA6 en lugar de un nuevo directorio A6 bajo el dierctorio EtchPM ya existente

- Introduzca cualquier cosa en los campos Vendor tag y Release tag Estas etiquetas raramentese usan y pueden ser borradas despueacutes Por tanto puede introducir cosas como VTAG yRTAG y borrarlas despues de que el import se haya completado Desafortunadamente CVSlas necesita para ejecutar el comando import Se pueden borrar despues de que se haya hechoel import seleccionando la carpeta de mas arriba en la jerarquiacutea y usando Delete tag al que sepuede acceder desde el menuacute Selections-gtTag selection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la version inicial 11) que apareceraacute en el fichero si la palabraclave $Log figura en el (solo ficheros de texto)

Despues de haber introducido valores en todos los campos pulse el botoacuten OK para iniciar el import

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 30: wincvs11es.pdf

30

Durante el import se ejecuta el comando de cvs del mismo nombre y la salida del mismo se visualiza en laventana de status de WinCvs como se muestra en el siguiente ejemplo

cvs -q import -I -I CVS -W doc -k b -m Import first phase of A6data files EtchPMA6 AVendor Import (in directory EData-A6)N EtchPMA6EndpointdocN EtchPMA6EtchPMdocN EtchPMA6MakefileN EtchPMA6READMEtxtN EtchPMA6A2EtchPMscriptN EtchPMA6A2AlarmsEtchPMalmdefN EtchPMA6A4RackSILYLATIONrackN EtchPMA6A4RecipeEtchPMrcpdefN EtchPMA6A4RecipeSilyPMrcpdef

No conflicts created by this import

CVS exited normally with code 0

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al area detrabajo ejecutando el comando update sobre la carpeta padre En este ejemplo se ha seleccionado eldirectorio EtchPM y despues update con el boton derecho del ratoacuten Se visualiza el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obtener enel area de trabajo una working copy (copia de trabajo) de los ficheros importados

Si desea que los ficheros que acaba de importar sean accesiblen en el repositorio como un moacuteduloseparado vea la Seccioacuten 41 Puede ser uacutetil permitir a los usuarios hacer checkoput de una parte del arbolde un moacutedulo en lugar de obligar a que el checkout se haga siempre del arbol completo

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 31: wincvs11es.pdf

31

31022 Importar una jerarquiacutea de ficheros a un nuevo moacutedulo

Al contrario que con otros comandos WinCvs tiene una uacutenica forma de invocar el comando import

Seleccione Cvs Admin-gtImport modulehellip en el menuacute WinCvs Se visualizaraacute el panel Select

Localice la carpeta que quiere importar y haga doble-click en ella para ver el icono de carpeta abierta Siselecciona la carpeta con un solo click de ratoacuten se seleccionaraacute la carpeta padre y todas sus subcarpetas enlugar de la carpeta deseada Esto es un bug de todos los comandos de WinCvs que usan esta forma deseleccionar carpetas En el ejemplo de arriba se ha seleccionado la carpeta New-Core que muestra suicono de carpeta abierta

Despueacutes de hacer doble-click en la carpeta a importar pulse OK En ese momento WinCvs examinaraacute lajerarquiacutea para determinar cuantos ficheros se estaacuten importando y determinar el tipo de cada uno de ellos(text o binary) Este proceso se llama filtrado (filtering) y puede llevar alguacuten tiempo si la jerarquiacutea esgrande Dirante este tiempo la ventana status de WinCvs visualizaraacute una liacutenea por cada carpeta examinadacomo se muestra a continuacioacuten

Filtering ENew-CoreFiltering ENew-Coreboot_strapFiltering ENew-CoredatabaseFiltering ENew-CoredriversFiltering ENew-CorehFiltering ENew-CoreutilitiesFiltering ENew-Corevme_trap

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 32: wincvs11es.pdf

32

Cuando se haya terminado el proceso de filtrado se visualizaraacute el panel Import filter con los resultados delmismo Este panel lista las extensiones de ficheros encontradas en la jerarquiacutea a importar y el tipo que cvsle asignaraacute al fichero (TEXT o BINARY) En el siguiente ejemplo hay 1 warning y no hay ningun error Elwarning indica que en un fichero con una extensioacuten que normalmente indica que el fichero es de texto(TEXT) se han encontrado caracteres binarios Los errores pueden ser ignorados (normalmente WinCvsharaacute lo correcto) o se puede pulsar el botoacuten Edit para cambiar lo detectado por WinCvs

Despues de que haya revisado el panel Import filter pulse Continue para comenzar el proceso deimportacioacuten

Despueacutes de pulsar el botoacuten Continue se visualizaraacute el panel Import settings

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 33: wincvs11es.pdf

33

En este ejemplo estamos creando una nueva carpeta A6 bajo el modulo EtchPM ya existente Noacutetese que elmoacutedulo importado Data-A6 no apareceraacute en el repositorio Todos los ficheros y subcarpetas de Data-A6seraacuten importados al repositorio en la carpeta A6 Este ejemplo muestra que una carpeta puede serimportada con un nombre diferente Hay que rellenar cuatro campos antes de iniciar el import

- Introduzca el nombre del path y el moacutedulo como se muestra arriba Noacutetese que cvsREQUIERE que se usen caracteres ldquordquo para separar los nombres de directorios Si utiliza elcaraceter backslash () creariacutea un nuevo moacutedulo llamado EtchPMA6 en la raiz del repositorioen lugar de un nuevo directorio A6 bajo el directorio EtchPM existente

- Entre cualquier cosa en los campos vendor tag y release tag Estas etiquetas no se usannormalmente y pueden ser borradas despueacutes Utilice etiquetas como VTAG y RTAG yborrelas despueacutes de que el import se haya completado Desafortunadamente CVS las necesitapara el comando import Pueden ser borradas despueacutes de que el import se haya realizadoseleccionando la carpeta del nivel superior y usando Delete tag en el menuacute Selections-gtTagselection

- Introduzca un mensaje de log adecuado (este mensaje seraacute parte de la informacioacuten de logasociada a los ficheros para la versioacuten inicial 11) que apareceraacute en el fichero si la palabraclave $Log se especifica en el mismo (solo ficheros de texto)

Despueacutes de que se hayan introducido todos los campos pulse el botoacuten OK para iniciar el import

Durante la ejecucioacuten del import el comando de cvs que se ejecuta y la salida de este se visualizaraacuten en laventana de status de WinCvs como se muestra en este ejemplo

cvs -q import -I -I CVS -W a -k b -W swp -k b -m Import newversion of Core for A6 NewCore AVendor Import (in directory ENew-Core)N NewCoreAuxiliary_ClockauxClockcN NewCoreAuxiliary_ClockMakefileN NewCoreboot_strapreadConfigcswpN NewCoreboot_strapmakefileN NewCorewatchdogMakefileN NewCorewatchdogwatchdogc

No conflicts created by this import

CVS exited normally with code 0

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 34: wincvs11es.pdf

34

Ahora que los ficheros han sido importados al repositorio se puede hacer checkout de los mismos al areade trabajo ejecutando el comando update sobre el directorio padre En este ejemplo seleccione eldirectorio EtchPM en la ventana del browser de WinCvs y seleccione update con el botoacuten derecho delratoacuten Se visualizaraacute el panel Update settings

Active la opcioacuten Create missing directories that exist in the repository y pulse el botoacuten OK para obteneruna working copy (copia de trabajo) de los ficheros importados en el area de trabajo

En este ejemplo de comando import se ha creado un nuevo moacutedulo Sin embargo el nuevo moacutedulo noapareceraacute en la lista de moacutedulos disponibles hasta que su nombre sea antildeadido a un fichero administrativollamado modules Vea la Seccioacuten 41 para saber como especificar nuevos moacutedulos en el fichero modules

311 Coordinacioacuten entre varios programadores

El modelo que por defecto utiliza cvs para que puedan trabajar varios programadores se llama unreservedcheckouts En este modo de funcionamiento varios programadores pueden editar a la vez su copia detrabajo de un mismo fichero Al primero de estos programadores que haga commit se le avisaraacute de quehaga un update si otro programador ya ha hecho commit de sus cambios a un fichero mientras este ficheroestaba siendo modificado por aquel El actualizar automaticamente el fichero con los cambios realizadosrecientemente por otros programadores lo realiza cvs automaacuteticamente sin que lo tenga que realizar elprogramador a mano y solo es necesario hacer la actualizacioacuten manualmente cuando cvs encuentramodificaciones que estan en conflicto y que no puede resolver el solo

Cvs tambieacuten soporta parcialmente el modelo reserved checkout Parcialmente porque cvs no obliga a queun fichero sea bloqueado antes de poder editarlo pero no permitiraacute hacer commit de un fichero que estaacutebloqueado por otro programador Los programadores pueden bloquear y desbloquear ficheros a voluntad

3111 Como funciona el update y el modelo Unreserved Checkout

Cuando los programadores usan el modelo unreserved checkout en cvs cualquier nuacutemero deprogramadores puede estar trabajando en el mismo fichero a la vez Como se explicoacute en la Seccioacuten 63hay que ejecutar el comando edit para marcar el fichero como modificable antes de que se puedan realizar

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 35: wincvs11es.pdf

35

cambios en el mismo En cualquier momento se puede visualizar la lista de programadores que en esemomento estaacuten modificando un fichero seleccionando el fichero con el botoacuten derecho del ratoacuten yejecutando la opcioacuten Monitors selection-gtEditors of selection

Cuando un programador intenta hacer commit de un fichero pueden suceder una de estas dos cosas

- Si no hay ninguna versioacuten mas nueva del fichero en el repositorio se crearaacute una nueva versioacutende este fichero en el repositorio como se explica en la Seccioacuten 39 Esta es la situacioacutennormal cuando ninguacuten otro programador estaacute trabajando en el mismo fichero o bien si lo estapero se es el primero en hacer commit

- Si en el repositorio ya existe una nueva versioacuten del fichero cvs le mostraraacute un mensaje deadvertencia y abortaraacute la operacioacuten de commit

En el caso de que cvs aborte la operacioacuten de commit porque encuentre una nueva versioacuten del fichero en elrepositorio WinCvs se lo advertiraacute en la ventana de status con un mensaje similar al siguiente

cvs -q commit -m This is the change from user 1 gascalc (in directoryEWorkAreaOneEtchPMsrc)cvs server Up-to-date check failed for `gascalccvs [server aborted] correct above errors first

CVS exited normally with code 1

En este caso se debe usar primero el comando update para actualizar el fichero con los cambios realizadospor los otros programadores Si el comando update se realiza con eacutexito se visualizaraacuten mensajes como lossiguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 12retrieving revision 13Merging differences between 12 and 13 into gascalcM gascalc

CVS exited normally with code 0

En este caso el status del fichero seguiraacute siendo Mod File pero la fecha de modificacioacuten cambiaraacute al textoResult of Merge como se muestra a continuacioacuten

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 36: wincvs11es.pdf

36

Despueacutes de esto ya se puede ejecutar otra vez comando commit para que el fichero actualizado con loscambios realizados por otros programadores sea copiado en el repositorio

En el caso de que el comando update falle porque cvs no sea capaz de actualizar el fichero con los cambiosque estan en la version del fichero en el repositorio pero no estan en la copia de trabajo del fichero sevisualizaraacuten mensajes similares a los siguientes

cvs -q update gascalc (in directory EWorkAreaOneEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvretrieving revision 14retrieving revision 15Merging differences between 14 and 15 into gascalcrcsmerge warning conflicts during mergecvs server conflicts found in gascalcC gascalc

CVS exited normally with code 0

Observe la ldquoCrdquo indicando que se encontraron conflictos En este caso el status del fichero cambiaraacute aConflict y la fecha cambiaraacute a Result of Merge como se muestra a continuacioacuten

En este caso el fichero resultante debe ser re-editado para resolver los conflictos manualmente Losconflictos se pueden localizar buscando en el fichero las cadenas de caracteres ltltltltltltlt ======== ygtgtgtgtgtgtgt como se muestra en el siguiente ejemplo

new_function_from_user_1

ltltltltltltlt gascalcvoid new_function_1( d e f )=======void new_function_1( a b c )gtgtgtgtgtgtgt 15

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 37: wincvs11es.pdf

37

El programador debe suprimir manualmente las lineas con ltltltltltltlt ======= y gtgtgtgtgtgtgt y resolverlos conflictos para las indicadas Despues de que los conflictos hayan sido resueltos se debe volver aejecutar el comando commit

Si el programador intenta hacer commir sin resolver ninguno de los conflictos cvs visualizaraacute el siguientemensaje de error y abortaraacute la operacioacuten de commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server file `gascalc had a conflict and has not been modifiedcvs [server aborted] correct above errors first

CVS exited normally with code 1

Si el programador resuelve solo algunos de los conflictos pero deja el fichero con otros conflictos sinresolver cvs visualizaraacute el siguiente mensaje de error cuando se haga el commit

cvs -q commit -m This is the change from user 1nn gascalc (indirectory EWorkAreaOneEtchPMsrc)cvs server warning file `gascalc seems to still contain conflictindicatorsChecking in gascalcStore200mmEtchPMsrcgascalcv lt-- gascalcnew revision 16 previous revision 15done

CVS exited normally with code 0

Noacutetese que a pesar de esto cvs haraacute commit del fichero aunque detecte alguno de los indicadores deconflicto (ltltltltltltlt ======= o gtgtgtgtgtgtgt) Probablemente esto no sea una caracteriacutestica deseable encvs pero es asiacute como funciona Si accidentalmente se hace commit de un fichero que todaviacutea contieneindicadores de conflictos el fichero debe ser editado vuelto a modificar y se debe hacer commit otra vezpara suprimir los indicadores de conflicto y resolver los conflictos que queden auacuten

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 38: wincvs11es.pdf

38

3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout

Como se dijo en la Seccioacuten 311 cvs soporta el modelo reserved checkout El comando lock es la base deeste modelo Bloqueando un fichero en cvs se evita que otro programador tambien pueda bloquearlo nihacer commit de una nueva versioacuten del fichero Esta forma de trabajar es segura en tanto que evita que otroprogramador pueda hacer commit antildeadiendo una nueva versioacuten del fichero al repositorio pero siguepermitiendo que otro programador edite el fichero (su copia en el area de trabajo) Esto puede producirfrustracioacuten si un programador olvida bloquear el fichero pero si lo edita Cuando el programador intentehacer commit del fichero la operacioacuten fallaraacute como se muestra en el siguiente ejemplo

cvs -q commit -m This is the change from user 2nn gascalc (indirectory EWorkAreaTwoEtchPMsrc)cvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Si todos los programadores cooperan y se ponen de acuerdo en bloquear un fichero antes de editarlo estasituacioacuten no se daraacute Como alternativa a esto se puede usar el modelo unreserved checkout

Como sucede con otros comandos WinCvs tiene varias maneras de invocar el comando lock

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el menuacute Selections

Selections-gtMonitors selection-gtLock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y la opcioacuten Monitors selection-gtLock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y el icono correspondiente de labarra de herramientas

Utilize el comando unlock de una de estas formas para desbloquear el fichero

1) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y use el menuacute Selections

Selections-gtMonitors selection-gtUnlock selection

2) Seleccione un fichero usando el botoacuten derecho del ratoacuten y escoja la opcioacuten Monitorsselection-gtUnlock selection

3) Seleccione el fichero(s) usando el botoacuten izquierdo del ratoacuten y utilice el icono correspondientede la barra de herramientas

Si la operacioacuten de lock tiene eacutexito se visualizaraacuten los siguientes mensajes en la vantana status

cvs -q admin -l gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcv12 lockeddone

CVS exited normally with code 0

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 39: wincvs11es.pdf

39

Si la operacioacuten de lock falla se visualizaraacute informacioacuten indicando quien tiene bloqueado actualmente elfichero

cvs -q admin -l gascalc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgascalcvcvs [server aborted] Revision 17 is already locked by apples

CVS exited normally with code 1

Desde todos los menuacutes y tambien desde la barra de herramientas se puede ejecutar el comando Log paraconocer el estado de un fichero en cuanto al bloqueo La salida del comando se visualiza en la ventana destatus como se muestra en este ejemplo donde el usuario don tiene bloqueada la versioacuten 12 del ficherogap_lpc

Rcs file Store200mmEtchPMsrcgap_lpcvWorking file gap_lpcHead revision 12Branch revision Locks strict

12 don

Hay algunos casos en los que se puede tener bloqueadas multiples versiones de un fichero Si se intentausar el comando unlock en este caso se obtendraacute el siguiente mensaje de error

cvs -q admin -u gap_lpc (in directory EWorkAreaTwoEtchPMsrc)RCS file Store200mmEtchPMsrcgap_lpcvcvs server Store200mmEtchPMsrcgap_lpcv multiple revisions lockedby don please specify onecvs server cannot modify RCS file for `gap_lpc

CVS exited normally with code 1

En este caso debe desbloquear una determinada versioacuten del fichero usando el comando cvs admintecleaacutendolo en la ventana de status de WinCvs En este ejemplo la versioacuten 11 de gap_lpc ha sidodesbloqueada (el programador ha tecleado aquiacute el comando cvs ndashq admin ndashl11 gap_lpc)

cvs -q admin -l11 gap_lpc

CVS exited normally with code 0

RCS file Store200mmEtchPMsrcgap_lpcvdone

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 40: wincvs11es.pdf

40

Seccioacuten 4 ndash Comandos Administrativos

Esta seccioacuten trata sobre comandos que normalmente deberiacutean ser usados solo por un administrador de cvsPara editar cualquier fichero administrativo hay que hacer checkout del moacutedulo CVSROOT en un aacuterea detrabajo local Vea las seccion 34 para informacioacuten sobre el comando checkout A continuacioacuten se muestraun area de trabajo con una versioacuten de CVSROOT obtenida mediante checkout

Observe que hay 11 ficheros administrativos en el moacutedulo CVSROOT Estos ficheros permiten manejarmuchas caracteriacutesticas avanzadas de cvs Vea el apeacutendice C (pag 125) del manual de referencia de cvs parauna descripcioacuten completa de estos ficheros y sus caracteristicas incluido el fichero opcional passwd

En esta seccioacuten describiremos solamente el uso del fichero modules

41 Editar el fichero administrativo modules

El fichero modules de cvs lista las jerarquiacuteas de carpetas para las que se puede hacer checkout desde elrepositorio usando el comando Cvs Admin-gtCheckout modulehellip del menu principal de WinCvs Usandoel fichero modules a cualquier parte de la jerarquiacutea de un moacutedulo o a varios moacutedulos existentes se les puedeasignar un solo nombre

Si se importa un moacutedulo a cvs y no se pone en el fichero modules se podraacute hacer checkout del mismo perono seraacute listado en la salida del comando Cvs Admin-gtMacros admin-gtList the modules on the server delmenuacute principal de WinCvs

Para poder editar el fichero modules se debe hacer primero checkout del moacutedulo CVSROOT como semencionoacute en la introduccioacuten a la Seccioacuten 4 Ademaacutes el fichero debe ser marcado como modificable comose dijo en la Seccioacuten 36

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 41: wincvs11es.pdf

41

A continuacioacuten se muestra un ejemplo de fichero modules

Three different line formats are valid key -a aliases key [options] directory key [options] directory files Where options are composed of -i prog Run prog on cvs commit from top-level of module -o prog Run prog on cvs checkout of module -e prog Run prog on cvs export of module -t prog Run prog on cvs rtag of module -u prog Run prog on cvs update of module -d dir Place module in directory dir instead of module name -l Top-level directory only -- do not recurse NOTE If you change any of the Run options above youll have to release and re-checkout any working directories of these modules And directory is a path to a directory relative to $CVSROOT The -a option specifies an alias An alias is interpreted as if everything on the right of the -a had been typed on the command line You can encode a module within a module by using the special amp character to interpose another module into the current module This can be useful for creating a module that consists of many directories spread out over the entire source repositoryEtchPM EtchPMCore CoreEtchPM-Source EtchPMsrc

La Seccioacuten C1 (pag 125) del manual de referencia de cvs describe el fichero modules en detalle Comotodos los ficheros despueacutes de modificados hay que hacer commit del fichero modules al repositorio(Section 39) antes de que los cambios tengan efecto

42 Acciones a realizar cuando el repositorio queda bloqueado

Internamente cvs realiza un bloqueo sobre el repositorio para evitar accesos simultaneos de varios usuarios El bloqueo es realmente un directorio de del repositorio llamado cvslock Si una operacioacuten de cvsaborta es posible que este bloqueo sobre el repositorio permanezca impidiendo que despues de esto sepuedan realizar otras operaciones En este caso el mensaje ldquowaiting for userrsquos lockrdquo se visualizaraacute en laventana de status como se muestra en el siguiente ejemplo donde el usuario R2D2 es el que tiene elbloqueo (el que tiene bloqueado el repositorio)

cvs admin -bLockTest2 -u applmainc

CVS exited normally with code 0

cvs server [134622] waiting for R2D2s lock in Store200mmEtchPMsrc

Normalmente este mensaje significa que el usuario R2D2 esta en el proceso de actualizar el repositorioEsto normalmente no deberiacutea ocupar mucho tiempo al cabo del cual el bloqueo se quitariacutea como semuestra a continuacioacuten

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 42: wincvs11es.pdf

42

cvs server [134652] waiting for R2D2s lock in Store200mmEtchPMsrccvs server [134722] obtained lock in Store200mmEtchPMsrcRCS file Store200mmEtchPMsrcapplmaincv1262 unlockeddone

En los casos en que cvs aborte por alguna razoacuten (pe peacuterdida de la comunicacioacuten de red o rearranque de lamaacutequina) puede ser necesario quitar el bloqueo manualmente El directorio cvslock localizado en elrepositorio en cuestioacuten y borrado usando el comando rmdir de UNIX (supuesto que el repositorio estaacute enuna maacutequina UNIX)

43 Gestioacuten de versiones

El mecanismo baacutesico para mantener varias versiones de un producto usando cvs es la etiqueta Lasetiquetas se describen en la Seccioacuten 44 (pag 32) del manual Version Management with CVS Cuando unproducto ha sido testeado y estaacute preparada una versioacuten de produccioacuten del mismo con un determinadoconjunto de versiones de ficheros entonces los ficheros pueden ser etiquetados con un nombre simboacutelicoLos ficheros pueden ser modificados despueacutes de la versioacuten de produccioacuten pero la versioacuten etiquetada sepuede recuperar siempre

El problema que siempre se plantea con el manejo de versiones es que hacer cuando se detecta un bugdespues de que se ha sacado una versioacuten de produccioacuten del producto Probablemente los ficheros delrepositorio han sido modificados despues de lanzarse la versioacuten de produccioacuten y no son lo bastante establescomo para generar una nueva versioacuten de produccioacuten que corrija el bug

La solucioacuten a este problema es crear una bifurcacioacuten (branch) a partir de la versioacuten que hay en elrepositorio etiquetada cuando se generoacute la versioacuten de produccioacuten (que no es la uacuteltima) Despueacutes de estolos ficheros de la bifurcacioacuten pueden ser modificados sin interferir con el hecho de que continuacutee eldesarrollo para la bifurcacioacuten principal (teacutecnicamente la bifurcacioacuten principal se llama trunk) Despueacutes deque se haya comprobado la solucioacuten de los errores la etiqueta de la versioacuten de produccioacuten original puedeser trasladada a las nuevas versiones de los ficheros o se puede crear una nueva etiqueta de versioacuten deproduccioacuten

Las dos secciones siguientes muestran ejemplos de coacutemo mover una etiqueta a una nueva versioacuten deproduccioacuten y como crear una nueva etiqueta para una versioacuten de produccioacuten

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 43: wincvs11es.pdf

43

431 Etiquetar una versioacuten de produccioacuten

Cuando un conjunto de ficheros han sido testeados y estaacuten listos para generar una versioacuten de produccioacuten sedeben etiquetar para marcar su estado actual En el siguiente ejemplo se visualiza un area de trabajo para elproducto EtchPM2 Se muestra parcialmente el listado de ficheros de la carpeta src para mostrar elconjunto de nuacutemeros de versiones (11 12 and 14)

Suponiendo que el area de trabajo EtchPM2 representa un conjunto de ficheros testeados estos pueden seretiquetados para generar una versioacuten de produccioacuten con el comando tag

El comando tag se puede invocar de cualquiera de estas formas

1) Seleccione la carpeta de mayor nivel en la jerarquiacutea (EtchPM2 en este caso) con el botoacutenizquierdo del ratoacuten y ejecute la opcioacuten de menuacute Selections-gtTag selection-gtCreate a taghellip

2) Seleccione la carpeta con el botoacuten derecho del ratoacuten y seleccione la opcioacuten Tag selection-gtCreate a taghellip del menuacute emergente

3) Seleccione la carpeta usando el botoacuten izquierdo del ratoacuten y despueacutes el icono de la barra deherramientas

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 44: wincvs11es.pdf

44

Despues de invocar el comando tag se visualizaraacute el panel Create tag settings como se muestra acontinuacioacuten

El panel Create tag settings tiene un campo para introducir el nombre de la etiqueta y tres opciones Elnombre de la etiqueta no debe contener ninguno de los siguientes caracteres $

La opcioacuten Overwrite existing tags with the same name especifica que cualesquiera etiquetas con el mismonombre que se encuentren sean trasladas a la versioacuten actual (la que hay en el area de trabajo actual)

La opcioacuten Do not recurse into sub-directories puede ser util cuando solo se desea etiquetar una carpeta

Es una buena praacutectica marcar la opcioacuten Check that the files are unmodified before tagging pues no tienemucho sentido tener ficheros en el area de trabajo que hayan sido modificados pero para los cuales no sehaya hecho commit

Despues de introducir la etiqueta y haber seleccionado las opciones deseadas pulse OK para comenzar elproceso de etiquetado Durante la operacioacuten cvs visualizaraacute los ficheros mientras van siendo etiquetadoscomo se muestra a continuacioacuten

cvs -q tag -c Release-1 (in directory ECVS-Work-AreasStore-200mmEtchPM2)T MakefileCVS exited normally with code 0

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 45: wincvs11es.pdf

45

432 Corregir errores despueacutes de generar una versioacuten de produccioacuten

Cuando se detecta un error en una versioacuten de produccioacuten (probablemente instalada y funcionando encliente(s)) el procedimiento usual es generar una versioacuten incremental con los miacutenimos cambios necesariospara corregir el error El primer paso para esto es crear el area de trabajo en la que se va modificar laversioacuten de produccioacuten para generar la versioacuten incremental Dependiendo del producto puede necesitarseun solo fichero o todo el arbol del repositorio El area de trabajo se crearaacute de forma que contenga laversioacuten de todos los ficheros que se etiquetaron con un determinado identificador o etiqueta en el momentode generar la versioacuten de produccioacuten es decir en el estado en que estaban en ese momento (desde entoncesel desarrollo probablemente ha continuado por ejemplo incorporando nuevas funcionalidades al producto)

4321 Crear el area de trabajo

Si ya existe un area de trabajo para el producto o moacutedulo esta puede ser actualizada a la versioacuten que sequiere modificar con el comando update (Seccioacuten 35) Sin embargo esta forma de proceder puedeproducir resultados no deseados piensese por ejemplo que sucede si en el area de trabajo ya hay ficherosque han sido modificados pero para los cuales no se ha hecho commit o si la estructura de carpetas hacambiado desde que se etiquetoacute la versioacuten que ahora hay que modificar

El mejor meacutetodo para crear un area de trabajo a partir de una versioacuten etiquetada es usar el comandocheckout (Seccioacuten 34) y hacer un checkout de la versioacuten etiquetada que se quiere modificar a una nuevaarea de trabajo Cuando se invoque el comando checkout se visualizaraacute el siguiente panel

Seleccione la carpeta donde se crearaacute el area de trabajo Recuerde que debe hacer doble-click en la carpetay ver el icono de carpeta abierta como se muestra arriba

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 46: wincvs11es.pdf

46

Una vez seleccionada la carpeta deseada haga click en OK para continuar con el proceso de checkout Semostraraacute el panel Checkout settings

El panel Checkout settings se muestra a continuacioacuten Introduzca el nombre del moacutedulo y vaya al panelCheckout options haciendo click en la solapa como se muestra a continuacioacuten

El panel Checkout options se muestra a continuacioacuten Marque la opcioacuten By revisiontagbranch eintroduzca el nombre de la etiqueta correspondiente a la versioacuten de produccioacuten que desee obtener

Despues de introducir el nombre de la etiqueta haga click en OK para inciar la operacioacuten de checkout

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 47: wincvs11es.pdf

47

Durante la operacioacuten de checkout cvs mostraraacute cada fichero como a continuacioacuten

cvs -q checkout -r Release-1 EtchPM2 (in directory ECVS-Work-AreasPatch-200)U EtchPM2MakefileU EtchPM2EtchPMMakefileU EtchPM2hgascalh

CVS exited normally with code 0

Despues de que se haya realizado el checkout utilice el comando View-gtChange browser location del menuacuteprincipal o la barra de herramientas para apuntar al area de trabajo que acaba de crear A continuacioacuten semuestra un ejemplo de area de trabajo creada para la versioacuten etiquetada como Release-1

Ahora que se ha creado un area de trabajo con los ficheros a las versiones en que estaban cuando seetiquetoacute la versioacuten del producto para produccioacuten debe crear una bifurcacioacuten para realizar lasmodificaciones necesarias para corregir el error(es) La seccioacuten siguiente explica la forma de crear unabifurcacioacuten a partir de la versioacuten que se acaba de poner en el area de trabajo

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 48: wincvs11es.pdf

48

4322 Crear una bifurcacioacuten

Los ficheros del area de trabajo que contiene la versioacuten de produccioacuten etiquetada no se pueden etiquetar yhacer con ellos commit Para hacer modificacionea a estos ficheros se necesita crear una bifurcacioacuten Si yaexiste una bifurcacioacuten utilice el comando update (Seccioacuten 35) para poner en el area de trabajo la uacuteltimaversioacuten de la bifurcacioacuten Si no existe una bifurcacioacuten para la versioacuten etiquetada que quiere modificar creeuna como se muestra en esta seccioacuten

Como sucede con otros comandos WinCvs tiene varias formas de invocar el comando branch (fork)

1) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y la siguienteopcioacuten de menuacute Selections-gtTag selection-gtCreate a branchhellip

2) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elbotoacuten derecho para abrir el menuacute Selections Aquiacute seleccione la entrada

Tag selection-gtCreate a branchhellip

3) Seleccione el(los) fichero(s) o carpeta(s) usando el botoacuten izquierdo del ratoacuten y despueacutes elicono de la barra de tareas

Cuando se invoca el comando branch (fork) el panel Create branch settings se visualizaraacute como se muestraa continuacioacuten

Introduzca el nombre que desee dar a la bifurcacioacuten y pulse el botoacuten OK Es buena praacutectica dar a labifurcacioacuten un nombre que identifique claramente el propoacutesito del mismo Como en este caso vamos adesarrollar sobre la versioacuten etiquetada como Release-1 un nombre epropiado puede ser Release-1-Development

El panel Create branch settings tiene dos opciones que pueden ser uacutetiles en ciertos casos Es una buenapraacutectica marcar la opcioacuten Check that the files are unmodified before branching (comprobar que los ficheros

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 49: wincvs11es.pdf

49

no han sido modificados antes de crear la bifurcacioacuten) ya que no tiene mucho sentido crear una bifurcacioacutena partir de ficheros que han sido modificados pero para los que no se ha hecho commit Tambieacuten es uacutetil aveces marcar la opcioacuten Do not recurse into sub-directories ya que a veces se crea una bifurcacioacuten para unasola carpeta y no se necesita que en la bifurcacioacuten esteacuten las subcarpetas de esta (que es la opcioacuten pordefecto)

La ventana de status mostraraacute como progresa la creacioacuten de la bifurcacioacuten como se ve a continuacioacuten

cvs -q tag -b -c Release-1-Development (in directory ECVS-Work-AreasPatch-200EtchPM2src)T CounterTimercT MakefileT PM_WaferFlowc

CVS exited normally with code 0

La bifurcacioacuten se crearaacute a partir de la versioacuten de los ficheros que se crearon en el area de trabajo al hacercheckout Notese que WinCvs usa el comando tag con la opcioacuten ndashb para crear la bifurcacioacuten Tambieacuten sepuede introducir manualmente este comando en la ventana de status de WinCvs

Notese tambieacuten que no por el hecho de crear una bifurcacioacuten se actualiza el area de trabajo a la versioacuten dela bifurcacioacuten (la operacioacuten de crear la bifurcacioacuten se hace contra el repositorio solo) Es necesario usar elcomando update (Seccioacuten 35) para actualizar el area de trabajo a la bifurcacioacuten que se acaba de crear

Una vez que la bifurcacioacuten ha sido creada y el area de trabajo actualizada los ficheros pueden sermodificados y se puede hacer commit de estas modificaciones (contra la bifurcacioacuten en el repositorio lalinea principal de desarrollo continua por su camino) como se describioacute en las secciones 36 a 39 Una vezque se hayan realizado y probado todas las modificaciones hay dos posibilidades para etiquetar una nuevaversioacuten de produccioacuten que se describen en la siguiente seccioacuten

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten
Page 50: wincvs11es.pdf

50

4323 Etiquetar la nueva versioacuten de produccioacutenEn el ejemplo anterior se hizo checkout de una versioacuten de produccioacuten etiquetada como Release-1 y semodificaron algunos ficheros creandose una bifurcacioacuten llamada Release-1-Development En este puntola persona responsable de versiones tiene dos opciones los ficheros modificados pueden ser reetiquetadoscon la etiqueta originar Release-1 o generar una nueva versioacuten de produccioacuten con una nueva etiqueta Enlos casos en que Release-1 ha sido suministrada a muchos clientes la versioacuten de produccioacuten originaletiquetada como Release-1 no deberiacutea se modificada necesitaacutendose una nueva versioacuten de produccioacuten conuna nueva etiqueta Si no se ha llegado a suministrar ninguna copia de Release-1 puede ser una buenaopcioacuten reetiquetar los ficheros modificados con la etiqueta original Release-1 A esto uacuteltimo se le llamatrasladar las etiquetas pues estas son realmente trasladadas de una versioacuten a otra solo para los ficherosmodificados

En cualquier caso el comando tag hay que invocarlo como se describioacute en la Seccioacuten 431 El siguientepanel muestra que opciones hay que marcar para crear una nueva versioacuten etiquetada llamada Release-1-Patch

Estas opciones se usariacutean para reetiquetar la nueva versioacuten con la etiqueta original Release-1

  • WinCvs Version 11
  • Guiacutea del Usuario
  • Seccion 1 ndash Introduccioacuten5Seccioacuten 2 ndash Instruccio
  • Seccioacuten 2 ndash Instrucciones de Instalacioacuten
  • Seccioacuten 3 ndash Guiacutea para principiantes de WinCvs
    • 31 Estableciendo la Carpeta Raiacutez del Area de Tr
    • 32 Estableciendo las preferencias (Preferences) en WinCvs
      • 321 Panel de preferencias General
      • 322 Panel de preferencias Globals
      • 323 Panel de preferencias Ports
      • 324 Panel de preferencias Proxy
      • 325 Panel de preferencias WinCvs
        • 33 Haciendo log in en el servidor
        • 34 Haciendo Check Out de un moacutedulo
        • 35 Actualizando (update) un aacuterea de trabajo
        • 36 Editando un fichero
        • 37 Visualizar las diferencias antes de hacer commit (modo texto)
        • 38 Visualizando las diferencias antes de hacer c
        • 39 Hacier commit con un fichero o una carpeta
        • 310 Antildeadir ficheros o carpetas al repositorio
          • 3101 Antildeadir ficheros o carpetas (a un moacutedul
          • 3102 Antildeadir ficheros o carpetas usando import
            • 31021 Importar una jerarquiacutea de ficheros a un
            • 31022 Importar una jerarquiacutea de ficheros a un
              • N NewCoreboot_strapmakefile
                  • 311 Coordinacioacuten entre varios programadores
                    • 3111 Como funciona el update y el modelo Unreserved Checkout
                    • 3112 Como funciona el sistema de bloqueos y el modelo Reserved Checkout
                        • Seccioacuten 4 ndash Comandos Administrativos
                          • 41 Editar el fichero administrativo modules
                          • 42 Acciones a realizar cuando el repositorio queda bloqueado
                          • 43 Gestioacuten de versiones
                            • 431 Etiquetar una versioacuten de produccioacuten
                            • 432 Corregir errores despueacutes de generar una ve
                              • 4321 Crear el area de trabajo
                              • 4322 Crear una bifurcacioacuten
                              • 4323 Etiquetar la nueva versioacuten de produccioacuten