Article View: es.comp.os.linux.programacion
Article #8267Re: CVS: Dudas en uso y administración
From: "Jesús M. NAVARRO"
Date: Sat, 07 Dec 2002 15:17
Date: Sat, 07 Dec 2002 15:17
149 lines
8813 bytes
8813 bytes
Hola, Count Zero: Count Zero wrote: > Posible Off-Topic dado que por el tipo de questiones que planteo se > ajustar�a m�s a instalaci�n o redes, pero ya que se trata de una > herramienta fundamental para el programador creo que se ajusta m�s aqu� y > obtendr� mejores respuestas. > > He dado una ojeada al Cederquist y al CVS-BestPractice (alguien sabe si hay > traducci�n de �ste �ltimo al espa�ol?). > > 1) > Diferencia entre 'branch' y 'release' ? (Soy novatillo en esto, lo siento) > 'Branch' es rama y 'release' versi�n. F�cil �no? Con m�s calma: el formato de ficheros del repositorio CVS es RCS. Este formato permite mantener "versiones" del mismo fichero a lo largo del tiempo. Cada una de estas versiones del fichero es una "release" del mismo. As�, la vez que a�ades un fichero al repositorio, de �ste se dice que est� en la versi�n (release) 1.1. Cuando haces cambios en el fichero es ingresas estos cambios en el repositorio, el fichero pasa a la versi�n 1.2, despu�s 1.3, 1.4, etc. Como ves, se sigue un formato lineal: primero la 1.1, luego la 1.2, luego 1.3... RCS (y por lo tanto CVS) permite tambi�n establecer para un fichero distintas "ramas evolutivas" (branches). La funcionalidad de las mismas es permitir desarrollo paralelo por m�s de una persona/equipo simult�neamente: imagina que tienes un programa que, por mor de la sencillez, consta de un s�lo fichero. Este programa accede a un fichero de texto, lo lee, hace ciertos c�lculos y presenta un resultado al usuario. Despu�s de un tiempo de desarrollo, digamos que el fichero est� en su revisi�n 1.25 y que pr�cticamente es estable (s�lo se corrigen errores). En ese momento, alguien decide que ser�a buena cosa que el programa pudiese acceder tambi�n a un base de datos y no s�lo a un fichero. En un entorno sin "ramas", har�as una nueva copia del fichero, que guardar�as a parte, por si aparecen nuevos bugs en la versi�n estable del programa y comenzar�as nuevo desarrollo, largo y con m�ltiples revisiones intermedias antes de poder finalmente a�adir la nueva funcionalidad. Los cambios en la versi�n estable que hubiesen ocurrido entre tanto tendr�an que ser estudiados para saber si se correspond�an a bugs que pudiesen afectar tambi�n a la nueva versi�n y ser�an a�adidos despu�s a esta. En un entorno CVS esto mismo se consigue a�adiendo "ramas" (branches) al desarrollo. En nuestro supuesto, crear�as una rama (y una etiqueta para poder encontrar m�s tarde este punto) a la altura de la revisi�n 1.25 (que a fecha de hoy, coindice con la cabeza -HEAD- de desarrollo) con algo como `cvs -b v_1_0` para la correcci�n de los bugs. Esto crear�a la rama 1.25.1, la primera revisi�n de la cual para nuestro fichero ser�a la 1.25.1.1. Ahora el desarrollo hacia la nueva versi�n del programa lo seguir�as haciendo en la rama principal (TRUNK) en tanto que las correcciones de la versi�n estable las llevar�as a cabo en la rama 1.25.1, a la que has dado el nombre simb�lico "v_1_0". M�s adelante podr�a incluso integrar los cambios de la rama estable (digamos que has corregido tres bugs en ella y que la �ltima revisi�n de ese fichero en esa rama fuese la 1.25.1.17) haciendo uso de la opci�n -j (aunque no recuerdo ahora mismo la sintaxis exacta). > 2) > Hay alguna forma de usar cvspserver de forma segura ? (encriptada o algo > as�). Por ahora uso SSH, pero los logs de sistema no distinguen las > conexiones SSH normales de las del CVS. > En dos palabras: N-O Sigue con CVS que ya vas bien. > 3) > Supongamos que un modulo del repositorio esta formado enteramente de > archivos binarios, hay alguna forma de indicarle esto al CVS sin tener > tocar el ./~cvsignore o tener que usar el cvs -kb ? > No, directamente. Pero si tienes suerte y estos ficheros tiene extensiones constantes y previsibles, puedes a�adirlas al fichero CVSROOT/cvswrappers. Por ejemplo, sabes que los fichero *.gif son binarios: puedes a�adir la siguiente l�nea al fichero cvswrappers: *.[Gg][Ii][Ff] -m COPY -k 'b' > 4) > Es posible usar m�s de un servidor ? > > Ejemplo: Tengo el servidor CVS principal, hago un cvs update des de un > port�til y luego en el port�til desconectado de la red uso el mismo host > como servidor CVS hasta que vuelva a conectarme con el CVS original. > S� y no. La respuesta "oficial" es que no, ya que el repositorio de conexi�n queda establecido en el fichero CVS/Root de tu sandbox. No obstante, si lo cambias a mano (y hay por ah� alg�n script ya hecho) no hay problema (desde el punto de vista de la conexi�n). De todos modos, en tu caso necesitar�s esto *y* el uso de alguna herramienta como cvsup para migrar los cambio. La operativa ser�a m�s o menos la siguiente. 1/ Trabajas con conexi�n: tienes una sanbox "contra" el servidor principal. 2/ Preparas la desconexi�n: para ello utilizar cvsup para sincronizar el repositorio en tu portatil con el princiapl. 3/ Desconectas. Ahora puedes optar por tener una sandbox *distinta* de la anterior para conectar al repositorio del portatil (si en tu sandbox del servidor principal no hab�a cambios pendientes, no habr� diferencia) o utilizas un script para cambiar el nombre del repositorio en tu sandbox al actual. 4/ Reconectas: vuelves a utilizar cvsup, en esta ocasi�n en direcci�n contraria para pasar los cambios en tu repositorio del portatil al repositorio principal y... 5/ Utilizas la misma estrategia que en 3 para volver a trabajar "contra" el repositorio principal. En todo caso, y si las desconexiones son por tiempo limitado, quiz� podr�as pasar sin actualizar los cambios a ning�n repositorio el tiempo que est�s desconectado, en cuyo caso el repositorio del port�til no ser�a necesario. > 5) > Supongamos que quiero hacer un repositorio de los directorios /etc/cron.* > (hourly, daily, weekly y monthly) dado que hay m�s archivos a parte de > estos en el /etc, hay alguna forma transparente de hacerlo? > No. Ni tampoco te interesa. Sin entrar en mucho detalle, por la forma en que trabaja CVS te conviene tener una sandbox propia, editar all� los ficheros conforme sea menester, hacer ci y co en ella, y cuando est�s satisfecho con un cambio, s�lo entonces, devuelves la nueva versi�n a su lugar. Yo tengo un repositorio, uno de cuyos m�dulos se llama equipos, a su vez con "subm�dulos" nombrados seg�n el FQDN de cada m�quina que administro. Al subm�dulo de una m�quina voy a�adiendo los ficheros que edito, la primera vez que lo hago. Luego, en mi directorio particular, tendo un subdirectorio en el que tengo sanboxes de los m�dulos correspondientes a las m�quinas con las que est� trabajando en el momento. Si hay que cambiar, digamos, el cron horario de la m�quina www.example.com, entonces edito el fichero en la sandbox equipos/www_example_com/etc/cron.hourly/tarea.sh, y cuando he acabado, lo copio (con scp, normalmente) a su m�quina de destino. Compruebo que funciona el cambio y cuando estoy conforme, hago el check-in del fichero editado con un comentario apropiado. > 6) y �tlimo > Algunas recomendaciones bibliogr�ficas a parte del Cederquist, > CVS-BestPractices, RCS-CVS Howto y el Micro-como de Olea ? > Pues que te suscribas al grupo de noticias gnu.cvs.help. -- SALUD, Jes�s *** jesus_navarro@undominio.net ***
Technical Details
Message-ID:
<i0g9c-r02.ln1@mithrandir.intranet>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!syros.belnet.be!news.belnet.be!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!212.97.187.85!not-for-mailReferences:
<assrl7$uj3sd$1@ID-131244.news.dfncis.de>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,d1ba88b273ac466d X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2002-12-07 08:12:24 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!syros.belnet.be!news.belnet.be!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!212.97.187.85!not-for-mail From: "Jesús M. NAVARRO" <jesus_navarro@undominio.net> Newsgroups: es.comp.os.linux.programacion Subject: Re: CVS: Dudas en uso y administración Date: Sat, 07 Dec 2002 16:17:05 +0100 Lines: 150 Message-ID: <i0g9c-r02.ln1@mithrandir.intranet> References: <assrl7$uj3sd$1@ID-131244.news.dfncis.de> NNTP-Posting-Host: 212.97.187.85 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1039277542 31863414 212.97.187.85 (16 [173178]) X-Orig-Path: mithrandir.intranet!news User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.2) Gecko/20021128 Debian/1.2-1 X-Accept-Language: es-es, es In-Reply-To: <assrl7$uj3sd$1@ID-131244.news.dfncis.de>