Node:Comenzar un nuevo Proyecto, Next:, Previous:Acceder a un Repositorio, Up:Un día con CVS



Comenzar un nuevo Proyecto

Si está estudiando el manejo de CVS para trabajar en un proyecto que ya se encuentra bajo control de CVS (es decir, que se guarda en un repositorio en alguna parte), probablemente querrá saltarse esta parte e ir directamente a la siguiente, "Obtener una copia de trabajo". Sin embargo, si lo que desea es tomar un código fuente ya existente y ponerlo bajo CVS, esta sección es para usted. Fíjese en que, a pesar de todo, se asume que dispone de acceso a un repositorio; vea Administracion del Repositorio si necesita configurar un repositorio.

Introducir un nuevo proyecto en un repositorio de CVS es lo que se conoce como importar. El comando CVS a utilizar, como quizás ya haya adivinado, es

floss$ cvs import

excepto que le hacen falta más opciones (y debe estar en el sitio apropiado) para que el comando tenga éxito. Primero, vaya al directorio raíz de su árbol de proyectos:

floss$ cd miproyecto
floss$ ls
README.txt  a-subdir/   b-subdir/   hello.c
floss$

Este proyecto tiene dos ficheros (README.txt y hello.c) en el nivel más alto, además de dos subdirectorios (a-subdir y b-subdir), y algunos ficheros más (no mostrados en el ejemplo) dentro de esos subdirectorios. Al importar un proyecto, CVS importa todo lo que hay en el árbol, empezando por el directorio actual y yendo a continuación a todos los directorios que haya por debajo de éste. Por tanto, debería asegurarse de que sólo los ficheros que hay en este momento en el árbol son los que desea que formen parte del proyecto de forma permanente. Cualquier vieja copia de seguridad, borrador, etc., deberían ser eliminados antes.

La sintaxis general del comando de importación es

floss$ cvs import -m "mensaje" miproyecto marca_suministrador marca_lanzamiento

La opción -m (de "mensaje") sirve para especificar un breve informe que describe la importación. Éste será el primer informe de cambios que afecta al proyecto en todo su conjunto; cada envío realizado en el futuro tendrá su propio informe de cambios. Estos informes son obligatorios; si no se utiliza la opción -m, CVS lanzará automáticamente un editor (consultando previamente la variable de entorno EDITOR) para que escriba en él el informe a utilizar. Una vez que guarde el informe en disco y salga del editor, el proceso de importación seguirá adelante.

El siguiente argumento es el nombre del proyecto (usaremos "miproyecto"). Éste es el nombre con el cual podrá obtener copias desde el repositorio. (Lo que realmente sucede es que se crea un directorio con ese nombre en el repositorio; encontrará más información al respecto en Administracion del Repositorio.) El nombre que elija no tiene por qué ser igual al del directorio actual, aunque en la mayoría de los casos lo será.

Los argumentos marca_suministrador y marca_lanzamiento son información de registro adicional para CVS. No se preocupe de ellos ahora; poco importa lo que utilice en este momento. En CVS avanzado podrá ver las raras ocasiones en las que son significativos; por ahora, utilizaremos un nombre de usuario y "start" respectivamente para estos dos argumentos.

Así pues, ya estamos listos para utilizar import:

floss$ cvs import -m "importación inicial a CVS" miproyecto jluis start
N miproyecto/hello.c
N miproyecto/README.txt
cvs import: Importing /usr/local/cvs/miproyecto/a-subdir
N miproyecto/a-subdir/loquesea.c
cvs import: Importing /usr/local/cvs/miproyecto/a-subdir/subsubdir
N miproyecto/a-subdir/subsubdir/fish.c
cvs import: Importing /usr/local/cvs/miproyecto/b-subdir
N miproyecto/b-subdir/random.c

No conflicts created by this import
floss$

¡Enhorabuena! Si ha ejecutado este comando (o algo similar), ya ha hecho por fin algo que afecta al repositorio.

Observando la salida del comando import, se dará cuenta de que CVS precede cada nombre de fichero con una letra, en este caso la "N" para indicar que se trata de un nuevo fichero. El uso de una letra a la izquierda para indicar el estado de un fichero es algo común en la salida de los comandos de CVS, tal como veremos más adelante también con los comandos "update" y "checkout".

Llegados a este punto, podría pensar que, puesto que ha importado el proyecto, puede empezar a trabajar en el árbol inmediatamente. Éste, sin embargo, no es el caso: el árbol de directorios actual no es todavía una copia de trabajo de CVS. Fue el origen para el comando de importación, cierto, pero no por éso se ha convertido por arte de magia en una copia de trabajo de CVS: para obtener una copia en la que poder trabajar, deberá tomarla del repositorio.

Pero antes, sin embargo, quizás quiera archivar el árbol de directorios actual. El motivo es que, una vez que las fuentes están en CVS, no querrá liarse y editar por error copias que no están bajo control de versión (puesto que esos cambios no se convertirán en parte del historial del proyecto). De ahora en adelante querrá hacer todas las ediciones sobre la copia de trabajo. Por otra parte, no le interesará eliminar completamente el árbol que ha importado, puesto que no ha verificado todavía si el repositorio dispone realmente de todos los ficheros. Por supuesto, puede estar un 99.999% seguro de que es así dado que el comando de importación no devolvió ningún error, pero, ¿por qué correr riesgos? A menudo vale la pena ser paranoico, como puede confirmarle cualquier programador. Así que haga algo como esto:

floss$ ls
README.txt  a-subdir/   b-subdir/   hello.c
floss$ cd ..
floss$ ls
miproyecto/
floss$ mv miproyecto era_miproyecto
floss$ ls
era_miproyecto/
floss$

Hecho. Ahora sigue teniendo los ficheros originales, pero están claramente marcados como correspondientes a una versión obsoleta, así que no estarán ahí estorbándole cuando obtenga una verdadera copia de trabajo. Ahora sí, por fin, está listo para obtenerla.