Node:Habilitar alarmas en el repositorio, Next:, Previous:Cómo funcionan las alarmas, Up:Alarmas (CVS como telefono)



Habilitar alarmas en el repositorio

Primero se debe activar la notificación mediante correo electrónico editando el fichero CVSROOT/notify. Uno de los dos desarrolladores debe hacer esto o el administrador del repositorio si los desarrolladores no tienen permiso para cambiar los ficheros administrativos del repositorio. En cualquier caso la primera cosa es obtener el área administrativa y editar el fichero notify:

floss$ cvs -q co CVSROOT
U CVSROOT/checkoutlist
U CVSROOT/commitinfo
U CVSROOT/config
U CVSROOT/cvswrappers
U CVSROOT/editinfo
U CVSROOT/loginfo
U CVSROOT/modules
U CVSROOT/notify
U CVSROOT/rcsinfo
U CVSROOT/taginfo
U CVSROOT/verifymsg
floss$ cd CVSROOT
floss$ emacs notify
...

Cuando se edita el fichero notify por primera vez nos encontramos con algo como esto:

# Versión en castellano
# El fichero 'notify' especifica donde van se envían las notificaciones
# procedentes de alarmas establecidas mediante "cvs watch add" ó "cvs
# edit". La primera entrada de una línea es una expresión regular que se
# compara con el directorio donde el cambio se está haciendo relativo a
# $CVSROOT. Si coincide el resto de la línea es un programa filtro que
# debería contener una ocurrencia %s que indica el usuario a notificar, e
# informcación de su entrada de datos estándar.
#
# "ALL" o "DEFAULT" puede ser usada en lugar de la expresión regular.
#
# Por ejemplo:
# ALL mail %s -s "notificación de CVS"

En realidad todo lo que hay que hacer es descomentar la última línea quitando el carácter #. Aunque notify proporciana la misma flexibilidad que otros ficheros administrativos a través de las expresiones regulares normalmente no se va usar. La única razón de tener múltiples lineas, cada una con un expresión regular para cada parte del repositorio es si se van usar otros métodos de notificación distintos para cada proyecto. Normalmente la mayoría de los proyectos usan correo electrónico ya que es un buen método de notificación.

Para especificar la notificación mediante correo electrónico, la línea

ALL mail %s -s "notificación de CVS"

debería funcionar en cualquier Unix estándar. Éste comando hace que las notificaciones o avisos sean enviadas mediante correo electrónico con la línea de subject notificación de CVS (La expresión se compara contra cualquier directorio). Cuando se haya descomentado la línea hay que entregar el fichero notify para que el repositoria sea consciente del cambio:

floss$ cvs ci -m "establecido notificación por alarma"
cvs commit: Examining .
Checking in notify;
/usr/local/newrepos/CVSROOT/notify,v  <--  notify
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database
floss$

Editar este fichero es todo lo que hay que hacer para establecer alarmas en el repositorio. Sin embargo si hay desarrolladores trabajando en máquinas remotas es necesario editar el fichero CVSROOT/users también. La función de este fichero es indicar a CVS a qué direcciones de correo enviar las notificaciones para los usuarios remotos. El formato de cada línea del fichero users sería:

CVS_USERNAME:EMAIL_ADDRESS

Por ejemplo,

qsmith:quentinsmith@farawayplace.com

El nombre de usuario al principio de la línea corresponde a un usuario de CVS del fichero CVSROOT/password (si está presente y el método de acceso por servidor está siendo usado), o el usuario del servidor ejecutando CVS. Siguiendo los dos puntos viene la dirección de correo de ese usuario a la que el CVS enviará las notificaciones.

Desgraciadamente en el momento de la escritura de este documeto el fichero users no existe en la distribución estándar de CVS. Debido a que es un fichero administrativo no sólo se debe crearlo, añadirlo cvs add ... y entregarlo commit ... de la forma usual sino que hay que añadirlo al fichero CVSROOT/checkoutlist para que una copia sea mantenida en el repositorio.

Lo siguiente es una sesión de ejemplo:

floss$ emacs checkoutlist
  ... (añade la línea para el fichero users) ...
floss$ emacs users
  ... (añade la línea para el usuario qsmith) ...
floss$ cvs add users
floss$ cvs ci -m "añade users a checkoutlist, qsmith a users"
cvs commit: Examining .
Checking in checkoutlist;
/usr/local/newrepos/CVSROOT/checkoutlist,v  <--  checkoutlist
new revision: 1.2; previous revision: 1.1
done
Checking in users;
/usr/local/newrepos/CVSROOT/users,v  <--  users
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database
floss$

Es posible usar direcciones de correo de formato expandido en CVSROOT/usres, pero hay que tener cuidado en poner todos los espacios en blanco entre comillas. Veamos el siguiente ejemplo

qsmith:"Quentin Q. Smith <quentinsmith@farawayplace.com>"

o

qsmith:'Quentin Q. Smith <quentinsmith@farawayplace.com>'

Sin embargo, esto no funcionará:

qsmith:"Quentin Q. Smith" <quentinsmith@farawayplace.com>

Si hay dudas debería probar ejecutando la orden del fichero notify directamente reemplazando %s en

mail %s -s "CVS notification"

por lo que sigue después de los dos puntos en el fichero users. Si funciona desde el prompt debería hacerlo también en el fichero de usuarios.

Cuando está terminado el fichero checkout debería aparecer como:

# El fichero 'checkoutlist' se usa para soportar ficheros adicionales de
# control de versión administrativos de $CVSROOT/CVSROOT, como plantillas.
#
# La primera entrada de una línea es un nombre de fichero que será obtenido
# del correspondiente RCS fichero del directorio $CVSROOT/CVSROOT.
# El resto de la línea será el mensaje de error que aparecerá si el fichero
# no se puede obtener.
#
# Formato del fichero:
#
#       [<espacio en blaco>]<nombre del fichero><espcio en blanco>
<mensaje de error><find de línea>
#
# líneas de comentario enmpiezan con '#'

users   No ha sido posible obtener users file in CVSROOT.

Ya hemos visto como se prepara el repositorio para las alarmas. Pasemos ahora a lo que los desarrolladores tienen que hacer en sus copias de trabajo.