Node:Acceder a un Repositorio, Next:, Previous:Invocación de CVS, Up:Un día con CVS



Acceder a un Repositorio

Antes de hacer nada, deberá decirle a CVS dónde se encuentra el repositorio al que desea acceder. Esto no es problema si ya ha obtenido una copia de trabajo de ese repositorio, dado que cualquier copia de trabajo sabe de qué repositorio procede, con lo cual CVS puede deducir automáticamente el repositorio al que corresponde una copia de trabajo cualquiera. Sin embargo, vamos a suponer que no dispone usted todavía de una copia de trabajo, así que tiene que decirle a CVS explícitamente dónde ir. Esto se hace con la opción global -d (de "directorio", una abreviatura para la que hay una justificación histórica, aunque la -r de "repositorio" hubiera sido mejor), seguido por la senda que apunta al repositorio.

Por ejemplo, asumiendo que el repositorio se encuentra en el sistema local en /usr/local/cvs (un lugar bastante estándar),

floss$ cvs -d /usr/local/cvs comando

En muchos casos, sin embargo, el repositorio estará en otra máquina, y por tanto deberá usar la red para llegar hasta él. CVS ofrece varios métodos de acceso; cuál de ellos será el que utilice es algo que depende fundamentalmente de los requisitos de seguridad de la máquina en la que se encuentra alojado el repositorio (a la que, de ahora en adelante, nos referiremos como "el servidor"). La configuración del servidor para permitir varios métodos de acceso remoto se comenta en Administracion del Repositorio; aquí trataremos sólo la parte de cliente.

Afortunadamente, todos los métodos de acceso remoto comparten una misma sintaxis de invocación. En general, para especificar un repositorio remoto y no uno local, lo que hará es utilizar una senda más larga. Primero debe indicar al método de acceso, delimitado en cada lado por símbolos de dos puntos, seguido del nombre de usuario y el nombre del servidor unidos por el símbolo @, otros dos puntos de separación, y, finalmente, la senda del directorio del repositorio en el servidor.

Veamos el método de acceso pserver, que significa "servidor autentificado por clave":

floss$ cvs -d :pserver:jluis@cvs.foobar.com:/usr/local/cvs login
(Logging in to jluis@cvs.foobar.com)
CVS password: (introduzca aquí su contraseña de CVS)
floss$

La larga senda del repositorio que sigue a la opción -d ha ordenado a CVS que use el método de acceso pserver, con el nombre de usuario jluis, en el servidor cvs.foobar.com, que tiene un repositorio CVS en /usr/local/cvs. Por cierto, no hay ninguna razón para que el nombre del servidor sea "cvs.algun_lugar.com"; esto es simplemente una convención común, pero podría haber sido también:

floss$ cvs -d :pserver:jluis@fish.foobar.org:/usr/local/cvs comando

El comando que se ejecutó en nuestro ejemplo fue "login", que verifica que dispone usted de autorización para trabajar en este repositorio. CVS le pedirá una contraseña, contactando a continuación con el servidor para verificarla. Siguiendo la costumbre Unix, "cvs login" no devolverá ninguna información adicional si la operación tiene éxito, aunque sí mostrará un mensaje de error si algo sale mal (por ejemplo, si la contraseña es incorrecta).

Sólo tiene que autentificarse una vez desde su máquina local ante un servidor CVS. Una vez que el proceso de autentificación tiene éxito, CVS guarda la contraseña en su directorio personal, en un fichero llamado .cvspass. CVS consultará este fichero cada vez que se conecte al repositorio a través del método pserver, así que sólo tiene que ejecutar "login" la primera vez que acceda a un determinado servidor de CVS desde un sistema cliente particular. Por supuesto, puede volver a ejecutar cvs login en cualquier momento, si por ejemplo se hubiera cambiado la contraseña.

Observación: pserver es en este momento el único método de acceso que requiere un proceso de autentificación inicial como éste; con el resto de métodos de acceso puede empezar a ejecutar comandos de CVS inmediatamente.

Una vez que ha guardado la información de autentificación en su fichero .cvspass, puede ejecutar otros comandos de CVS utilizando la misma sintaxis en la línea de comando:

floss$ cvs -d :pserver:jluis@cvs.foobar.com:/usr/local/cvs comando

Hacer que pserver funcione en Windows puede requerir un paso adicional. Windows carece del concepto Unix de un directorio personal, así que CVS no sabe dónde poner el fichero .cvspass; deberá especificar para ello un lugar concreto. Generalmente se indica la raíz de la unidad C: como el directorio personal:

C:\WINDOWS> set HOME=C:
C:\WINDOWS> cvs -d :pserver:jluis@cvs.foobar.com:/usr/local/cvs login
(Logging in to jluis@cvs.foobar.com)
CVS password: (introduzca aquí su contraseña)
C:\WINDOWS>

Cualquier carpeta existente en la jerarquía de ficheros resultará válida, aunque posiblemente prefiera evitar utilizar unidades de red, dado que el contenido de su fichero .cvspass sería entonces visible para cualquiera que pudiese acceder a esa unidad.

Además de pserver, CVS soporta también los métodos ext -que utiliza un programa de conexión externo. como rsh ó ssh-, kserver -para el sistema de seguridad Kerberos versión 4-, y gserver, que usa el GSSAPI, esto es, el API de Generic Security Services, y también las versiones 5 y posteriores de Kerberos. Todos estos métodos son similares a pserver, si bien cada uno presenta sus propias idiosincrasias.

De ellos, el método ext es probablemente el que más se usa habitualmente. Si tiene la posibilidad de conectarse a un servidor mediante rsh o ssh, puede usar el método ext. Puede probarlo de esta forma:

floss$ rsh -l jluis cvs.foobar.com
Password:  (introduzca aquí su contraseña de usuario)

Bien, vamos a asumir que ha entrado y salido con éxito del servidor con rsh, así que ahora está de nuevo en el sistema cliente original:

floss$ CVS_RSH=rsh; export CVS_RSH
floss$ cvs -d :ext:jluis@cvs.foobar.com:/usr/local/cvs comando

La primera línea (empleando la sintaxis del shell Bourne de Unix) da a la variable de entorno CVS_RSH el valor rsh, que le dice a CVS que utilice el programa rsh para conectarse. La segunda línea puede ser cualquier comando de CVS; se le solicitará su contraseña para que CVS pueda conectarse con el servidor.

Si está en el shell C en lugar del shell Bourne, pruebe esto:

floss% setenv CVS_RSH rsh

y para Windows, pruebe esto:

C:\WINDOWS> set CVS_RSH=rsh

El resto de esta guía empleará la sintaxis Bourne; adapte los ejemplos a su entorno como necesite.

Para usar ssh (el shell seguro) en lugar de rsh, basta con que cree la variable de entorno CVS_RSH de la forma apropiada:

floss$ CVS_RSH=ssh; export CVS_RSH

No se eche a temblar por el hecho de que el nombre de la variable es CVS_RSH y Ud. le está dando el valor ssh. Hay razones históricas para esto (la socorrida excusa Unix para todo, lo sé...). CVS_RSH puede apuntar al nombre de cualquier programa capaz de conectarle a un servidor remoto, ejecutar comandos y recibir su salida. Después de rsh, ssh es posiblemente el programa más común que cumple estos requisitos, aunque probablemente existan otros. Tenga en cuenta que este programa no debe modificar su flujo de información de ninguna manera. Esto deja fuera al rsh de Windows NT, puesto que convierte (o intenta convertir) entre las convenciones de fin de línea de DOS y Unix. En su caso, deberá conseguir algún otro rsh para Windows, o bien utilizar un método de acceso distinto.

Los métodos gserver y kserver no se utilizan tanto como los demás y no se cubren aquí. Son bastante parecidos a lo que aquí se ha cubierto hasta ahora; para más información sobre ellos, lea el Cederqvist.

Si sólo utiliza un repositorio y no quiere estar constantemente tecleando "-d repositorio", sólo tiene que crear la variable de entorno CVSROOT (que quizás debería haber sido llamada CVSREPOS, pero ya es demasiado tarde para eso):

floss$ CVSROOT=/usr/local/cvs
floss$ export CVSROOT
floss$ echo $CVSROOT
/usr/local/cvs
floss$

o quizás

floss$ CVSROOT=:pserver:jluis@cvs.foobar.com:/usr/local/cvs
floss$ export CVSROOT
floss$ echo $CVSROOT
:pserver:jluis@cvs.foobar.com:/usr/local/cvs
floss$

El resto de esta guía asume que ya ha creado la variable CVSROOT apuntando a su repositorio favorito, así que los ejemplos no mostrarán la opción -d. Si necesita acceder a muchos repositorios distintos, no debería crear la variable CVSROOT, sino limitarse a usar "-d repositorio" para indicar el repositorio a utilizar.