Ayuda OnLine de GULiC

Anon5861

Ayuda
  • Temática: Puedes preguntarnos sobre Software Libre, Linux o GULiC. Otros temas pueden ser respondidos (o no!)
  • Acceso: Para mantener tu anonimato, se te ha asignado un nick al azar (Anon5861). Si deseas identificarte, puedes solicitar tu inscripción como socio ó iniciando sesión, si ya lo eres. En cualquier caso, si usas jabber, puedes informarte de cómo entrar a esta sala con tu cliente habitual, o bien entrando vía jwchat.
  • Uso:Para ver el chat más grande, usa ésta página. Si vas a pegar textos grandes, usa nuestro pastebin. Para avisar de errores o problemas, usa nuestro trac.
  • Horarios: Nuestro huso horario es GMT. No te extrañe si a las 5 de la mañana no te responde nadie.

Tutorial CVS

MINICURSILLO DE CVS EXPUESTO EN EL CANAL #GULIC

  • Expuesto en el canal por iCorrecam.
  • Documentado por KiCkStAnD.
  • Transcrito a este wiki por miguev.

¿Para que sirve CVS?

Es usado para infinidad de cosas, concretamente para todas aquellas en las que existe un trabajo colaborativo. Por ejemplo, en el servidor de GULIC, aunque se puede utilizar para cosas tan variadas como para coordinar una traducción, un trabajo de clase de algunos alumnos, es decir, todo aquello que pueda hacerse de manera colaborativa.

¿Que pasa cuando hay un error?

Cada fichero que entra en el CVS, es numerado con un orden de versión para que cuando alguien modifica un fichero y se equivoca, lo único que hay que hacer revisar el log para darse cuenta quién y cuando se ha equivocado alguien y volver a la versión anterior de ese fichero. Como se ve, el hecho de equivocarse, tiene un arreglo muy sencillo.

¿Es complicado de manejar CVS?

No, CVS es como el ftp de toda la vida, con algunas opciones más. Las opciones principales tienen unas misiones muy claras.Lo que si tenemos que tener algunos conceptos claros.

  • Repositorio: Es el árbol de directorio de una rama del CVS. Existen varios repositorios para alojar proyectos diferenciados en un CVS, tales como documentación y programación.

  • Módulo: Es el directorio donde se alojan los conjuntos de ficheros de un proyecto. Pueden ser las distintas imágenes y páginas webs de la FICIT por ejemplo.

Cuando trabajamos con un CVS (pensemos en el como si fuera un ftp), lo que hacemos es bajarnos unos ficheros/directorios, que luego editaremos en nuestro disco local, y posteriormente subiremos a ese ”ftp”.

Sobre el cvs de GULiC

Actualmente en el cvs de gulic existen 3 repositorios, ‘gulic’, ‘soft’ y ‘doc’. Dentro de cada uno de ellos se llevan diversos trabajos como indica cada uno de ellos.

  • ‘gulic’: Alberga los trabajos que atañen al grupo, tales como páginas webs de partys o la propia FAQ de gulic.
  • ‘soft’: Dentro se llevan trabajos de software, tales como scripts de uso general y proyectos de software libre desarrollados o modificados por miebros del GULiC.
  • ‘doc’: Se encuentra toda la documentación, traducciones, creaciones de howtos y manuales como este.

Métodos básicos de autentificación a través de CVS

En local

Si ya estás dentro de la maquina, puedes usar esta, la más simple:

    $ export CVSROOT=/var/lib/cvs/gulic
    $ cvs login

Como se puede apreciar, este sistema de autentificacion SIEMPRE es local. Sólo nos serviría si el servidor estuviera en nuestra maquina, o bien , que tuviéramos cuenta Shell en la maquina remota. Este NO será el caso de la mayoría de nosotros.

Recordatorio: para las explicaciones utilizaremos el repositorio /var/lib/cvs/gulic

Mediante SSH

Si se usa ssh, la recomendación pasa por usar el método ;ext:

    $ export CVS_RSH=ssh
    $ export CVSROOT=:ext:<usuario>@cvs.gulic.org:/var/lib/cvs/gulic
    $ cvs login
    Password: (tendrías que introducir el password de tu cuenta)

Export ‘exporta’ una variable local, que será tenida en cuenta por todos los programas que la necesiten. En export CVSROOT lo que estamos haciendo es darle la oportunidad al programa para que acepte nuestra sugerencia y use el CVSROOT que nosotros le digamos. Este método seria el recomendado, ya que todo el tráfico entra en nuestra maquina y el servidor CVS estará debidamente cifrado.

Me sugieren al oído que aclare qué es el SSH. El SSH es el acrónimo de ”Secure Shell”, es decir, una shell segura que nos permite establecer comunicaciones cifradas ”de calidad” con cualquier otra maquina que disponga también de SSH.

Digo de calidad porque el cifrado que se utiliza es lo suficientemente fuerte como para que no nos pillen password de ninguna manera como comparación, cuando utilizamos telnet, lo que hacemos es enviar la clave, en texto plano, a través de toda internet. Para utilizar el ssh, aparte de instalar, conviene leer el manual, obviamente. Pero para que se hagan una idea, funciona de una forma tan sencilla como esta:

    ssh root@www.unamaquina.com

Con eso, podríamos entrar en esa maquina con una sesión cifrada y segura a la suite de ssh. También trae algunos programas interesantes, de entre los cuales, yo destacaría el scp secure cp. Funciona de esta manera:

    scp mifichero lcabrera@mi.otra.maquina:/home/lcabrera

Recomiendo encarecidamente que utilicen estos sistemas puesto que son seguros.

Acceso anónimo

Si lo usas como usuario anónimo, entonces es recomendable esto otro:

    $ export CVSROOT=:pserver:anonymous@cvs.gulic.org:/var/lib/cvs/gulic
    $ cvs login
    Password:

Con poner eso dando la clave anoncvs (o la que nos indiquen, pues podría cmabiar con el tiempo), estaríamos en disposición de poder bajar los módulos que hubiera.

Mediante Pserver

Si ya se tiene una cuenta con acceso de escritura, que es la que hemos dado en Gulic, se tendría que actuar así:

    $ export CVSROOT=:pserver:<usuario>@cvs.gulic.org:/var/lib/cvs/gulic
    $ cvs login
    Password:

Como se ve, aquí estamos utilizando el método de acceso llamado ;pserver:

Hasta ahora hemos visto dos, :ext: y :pserver: El primero debe ser el recomendado, ya que nos permite cifrar toda la conexión entre nuestra maquina y el servidor cvs, el segundo es el método normal de acceso. Es un poco mas inseguro.

Bajarse un módulo

Los módulos son divisiones lógicas dentro del servidor CVS. Casi siempre se corresponden con directorios, aunque eso depende del administrador del CVS, ya que puede crear alias dentro del CVS para ponerlo de la manera que mejor le convenga.

Espero que todos entiendan lo que es un módulo, porque es un eje fundamental para entender el trabajo diario con CVS. Por ejemplo, el otro día me baje el CVS de las Xfree, es enorme. Una cosa que me sorprendió fue lo bien estructurado que tienen sus módulos pero eso se entiende viendo la envergadura del proyecto.

Para saber lo módulos que tiene un proyecto (como es gulic), lo que hay que hacer es bajarse el fichero modules. ¿que donde está ese fichero …? cuando exportamos el CVSROOT de gulic, lo hacemos así:

    export CVSROOT=':pserver:<usuario>@cvs.gulic.org:/home/cvs/gulic'

Bueno, con eso le decimos donde esta la raíz del servidor, pero dentro de esa raíz, existe un directorio especial llamado también CVSROOT. Dentro de ese directorio del cvs, tenemos el método de control del sistema CVS. Entre otros muchísimos ficheros, tenemos el fichero modules. Si yo quiero saber los módulos que hay ahí, haría lo siguiente:

    $ export CVSROOT=':ext:lcabrera@cvs.gulic.org:/var/lib/cvs/gulic'
    $ cvs login
    Password: (mi clave)
    $cvs co CVSROOT

Con eso, me bajaría el directorio administrativo del servidor CVS dentro de ese directorio está toda la información que quiera saber.

El siguiente comando nos daría una lista de los módulos de un repositorio:

    cvs -z9 co -c

La opción -c mostrará una lista de los módulos en la base de datos. En ella, los elementos de la izquierda son los módulos o alias, los elementos de la derecha son los directorios donde se encuentran dichos módulos.

Orden para bajarse un módulo

    cvs -z9 co <módulo>

Nota: co es la abreviatura de checkout, -z9 es el parámetro -zn )

El parámetro -z es para la compresión onthefly, es decir, un txt plano que cuando lo solicitas con compresión, el servidor cvs lo comprime y te lo envía mientras que el cliente lo coge y lo descomprime, para ponerlo en tu maquina, dependiendo del nivel de compresión expresaremos un número, como 9.

Cuando nos bajamos un módulo, en nuestro disco local aparece un directorio con el nombre del módulo. Dentro de él existe una carpeta llamada ‘CVS’ donde podrémos encontrar varios ficheros tales como:

  • Entries: Encontramos el estado del fichero, versión, fecha de edición, etc.
  • Repository: Encontramos el directorio de donde se ha bajado el módulo.

Subir los cambios efectuados en un módulo

Una vez que hayamos modificado algún fichero que nos hayamos bajado perteneciente a cualquier módulo, lo correcto es volverlo a subir al servidor CVS. Para ello, utilizamos la siguiente orden:

    cvs -z9 ci fichero

ci es la abreviatura de commit. Esta orden, sin especificar ningún fichero, actuará de forma recursiva. Es decir, si hacemos ‘cvs -z9 ci’ desde la raíz del módulo, hará una comprobación de todos los cambios que hayamos hecho en el mismo y los subirá al servidor CVS. Esto es util cuando se han tocado bastantes ficheros. Pero esto tiene el defecto de que cada vez que subes un fichero al servidor, se te pedirá que metas un comentario de porqué has cambiado el fichero. Cuando son varios ficheros los que has tocado, también te pedirá el comentario, pero resulta que pondrá en cada fichero SOLO el comentario que pongas en ese momento, con lo que pierdes la posibilidad de poner comentarios específicos para cada fichero.

Actualizar un módulo que tengamos en local

Si nos bajamos un módulo y lo tenemos en nuestra maquina, lo lógico es que no nos lo bajemos de nuevo, ya que esto es una pérdida de tiempo. Para ello existe una orden que nos permite poner al día la copia local del módulo que nos hemos bajado:

    cvs -z9 update -Pd

Los parámetros -Pd son MUY importantes, ya que nos permite que la actualización cumpla con dos requisitos muy importantes: -P nos permite crear los directorios que se hayan podido crear mientras tengamos la copia de ese modulo en nuestra maquina. También puede crear los ficheros nuevos que se hayan añadido.

La opción -d borrará todo aquello que hayan borrado mientras teníamos el modulo en local. Con esta orden, el módulo se actualizará de manera automática, permitiéndonos iniciar el trabajo sobre sus ficheros.

Añadir o borrar un fichero/directorio determinado

Una vez que tenemos el módulo en nuestra maquina, podemos añadir o quitar ficheros con estas sencillas ordenes:

Orden para añadir un fichero/directorio:

    cvs add fichero/directorio
    cvs -z9 ci fichero/directorio

Hay que destacar que para cvs, añadir un fichero o añadir un directorio es exactamente lo mismo.

Orden para borrar un fichero/directorio:

    rm fichero/directorio
    cvs remove fichero/directorio
    cvs -z9 ci

Aquí hay que destacar que tenemos que borrar el fichero antes de borrarlo del cvs. Una vez que lo hayamos borrado, entonces podremos hacer el cvs remove fichero.

Salir de una sesión de CVS:

    cvs logout

¿Que ocurre cuando se llevan varios desarrollos simultáneos?

Supongamos un fichero. Primero lo edita Juan, luego lo edita Pepe que le añade cosas interesantes. Pero el trabajo de Juan también es interesante.

Entonces el jefe del proyecto decide sacar una rama nueva para Juan. A partir de ese momento, habrán dos ramas distintas, dentro del mismo proyecto. Eso ocurre, por ejemplo, con el kernel. Tenemos una versión estable y otra inestable, pero forman parte de un todo: el kernel.

Ese ejemplo nos vale, pero quizás con otra explicación se entienda mejor, o por lo menos con otro punto de vista.

Pepe sigue su desarrollo mientras Juan sigue el suyo, cada uno en una rama separada. El jefe de proyecto, que es muy cuco, va vigilando los dos desarrollos y en un momento dado, dice: señores, vamos a fundir las dos ramas en una sola. Entonces coge lo mejor de cada rama y unifica el desarrollo de nuevo.

¿Como me puedo bajar una versión anterior?

No recuerdo ahora los comandos exactos, pero el cvs permite retomar un fichero por su numero de versión o por la rama en la que está. Para ver la orden correcta, tendría que mirar la documentación.

Bien, hasta aquí acaba el minicursillo de cvs. Espero que hayan comprendido el funcionamiento de cvs y que trabajen cuanto antes con él.

Lecturas complementarias:

  • The Coriolis Group. Open Source Development With CVS. ISBN 1-57610-490-7. Una parte de este libro está empaquetado en la distribución Debian, el paquete es cvsbook.

miguev - 04 Sep 2003