Node:Algunos comandos fallan en remoto pero no en local; ¿cómo lo depuramos?, Next:, Previous:¿Como obtener una lista de todos los proyectos del repositorio?, Up:Algunos Problemas de la Vida Real (con Soluciones)



Algunos comandos fallan en remoto pero no en local; ¿cómo lo depuramos?

A veces hay un problema de comunicación entre el cliente y el servidor. Y puede ser un error de CVS.

CVS proporciona un mecanismo de trazar el protocolo entre el cliente y el servidor. Antes de ejecutar el comando en la máquina local (con la copia de trabajo), crear la variable CVS_CLIENT_LOG. En un shell de Bash se haría así:

floss$ CVS_CLIENT_LOG=clog; export CVS_CLIENT_LOG

Una vez creada la variable, CVS almacenará las comunicaciones entre cliente y servidor en dos ficheros con el nombre basado en el valor de la variable anterior:

floss$ ls
CVS/        LEAME.txt    a-subdir/    b-subdir/    prueba.gif     hola.c
floss$ cvs update
? clog.in
? clog.out
cvs server: Updating .
cvs server: Updating a-subdir
cvs server: Updating a-subdir/subsubdir
cvs server: Updating b-subdir
floss$ ls
CVS/              a-subdir/    clog.in     prueba.gif
LEAME.txt        b-subdir/    clog.out    hola.c
floss$

El fichero clog.in contiene lo enviado por el cliente al servidor, y el fichero clog.out contiene los mensajes del servidor al cliente. Vemos por ejemplo el contenido de clog.out:

Valid-requests Root Valid-responses valid-requests Repository           \
Directory Max-dotdot Static-directory Sticky Checkin-prog Update-prog   \
Entry Kopt Checkin-time Modified Is-modified UseUnchanged Unchanged     \
Notify Questionable Case Argument Argumentx Global_option Gzip-stream   \
wrapper-sendme-rcsOptions Set expand-modules ci co update diff log add  \
remove update-patches gzip-file-contents status rdiff tag rtag import   \
admin export history release watch-on watch-off watch-add watch-remove  \
watchers editors init annotate noop
ok
M ? clog.in
M ? clog.out
E cvs server: Updating .
E cvs server: Updating a-subdir
E cvs server: Updating a-subdir/subsubdir
E cvs server: Updating b-subdir
ok

El fichero clog.in es más complicado, puesto que incluye números de versión y otras informaciones por cada fichero.

No podemos dedicar espacio aquí a documentar el protocolo, pero podemos leer las páginas Info de cvsclient que vienen con el paquete de CVS para más información. Comprobaremos que aunque no siempre nos dé una respuesta, mirar el histórico del protocolo puede darnos una buena pista.