Node:Algunos comandos fallan en remoto pero no en local; ¿cómo lo depuramos?, Next:Mi problema no está explicado en este capítulo, Previous:¿Como obtener una lista de todos los proyectos del repositorio?, Up:Algunos Problemas de la Vida Real (con Soluciones)
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.