Empleando clasificaciones, secuencias y el sistema de archivos puede organizarse el plan de estudios de un colegio. Una posible organización en directorios se esboza a continuación, es apropiada para mantener información de varios años en un colegio de acuerdo a la legislación colombiana vigente:
2004 bprimaria 1 castellano.sec , castellano.cla, castellano.def dh.sec , dh.cla, dh.def dibujo.sec , dibujo.cla, dibujo.def edufisica.sec , edufisica.cla, edufisica.def matematicas.sec , matematicas.cla, matematicas.def musica.sec , musica.cla, musica.def naturales.sec , naturales.cla, naturales.def religion.sec , religion.cla, religion.def sociales.sec , sociales.cla, sociales.def trabajomanual.sec , trabajomanual.cla, trabajomanual.def 2 ... 3 4 5 bsecundaria ... media ... 2003 bprimaria bsecundaria media ...
Que se podría crear a partir del plan de estudios completo incluido entre
los ejemplos de repasa
(ver directorio
ejemplos/planest
o http://structio.sourceforge.net/repasa/planest),
bien copiandolo para adaptarlo respetando los créditos o bien
con comandos como:
mkdir planest cd planest mkdir 2004 cd 2004 mkdir bprimaria bsecundaria media cd bprimaria mkdir 1 2 3 4 5 cd ../bsecundaria mkdir 6 7 8 9 cd ../media mkdir 10 11
y que podría completarse con los archivos creados por los profesores de cada asignatura en cada grado. Un archivo de clasificaciones tendrá los logros e indicadores de una asignatura en un grado, posiblemente con ejercicios, ejemplos y referencias a definiciones importantes consignadas en el archivo de definiciones correspondiente. Por su parte el archivo de secuencia separará en los 4 periodos los indicadores del archivo de clasificaciones correspondiente.
Además de logros e indicadores, en los archivos de
clasificaciones puede incluir información adicional empleando
anotaciones. Por ejemplo si un
indicador en un archivo de clasificaciones no es recuperable
después de la descripción (y antes de cerrar el elemento
clasif
) puede agregar una anotación como:
<anota tipo="Recuperable" valor="no"></anota>
Para la edición de archivos de clasificaciones y secuencias
podría emplear un editor de texto como vim
o emacs. Desde ambos podrá ejecutar
repchq y el corrector de ortografía para
verificarlos sintáctica y ortográficamente (o mejor con un
Makefile
, ver Sección 2.4, “Automatización”). Dado que la
convención para presentar errores de repchq
es estándar,
desde ambos editores se pueden localizar errores rápidamente.
También podrían editarse empleando las herramientas
edcla y edsec. La primera
permite añadir o eliminar una clasificación o anotaciones a
un archivo de
clasificaciones. La segunda permite añadir o eliminar una
referencia a una clasificación en un archivo de secuencia.
Si deseara añadir un indicador al logro con identificación
establece
del ejemplo de clasificaciones que
se ha visto podría emplear:
edcla ejsimple.cla "añadir" "Indicador" "establece.esperanza" \ "Considere la muerte, ¿En algún mensaje de Jesús encuentra esperanza?"
Puede consultar la sintaxis de uso de estos programas en las páginas del manual edcla(1), edsec(1)
En la sección
Sección 1.2, “Convirtiendo a HTML con XSLT” se presentó
la forma de generar un HTML a partir de un archivo de
secuencia y su archivos asociados. Puede crearse un
script que genere toda la información del plan de estudios
en archivos HTML. En el directorio
ejemplos/planest
encontrará uno que
realiza esta labor. Puede emplearlo para generar archivos
HTML del plan de estudios del 2004 en el directorio
/var/www/htdocs/plan
con:
cd planest ./genhtml.sh /var/www/htdocs/plan 2004
En un servidor tipo Unix (como OpenBSD o Linux) una organización de archivos como esta junto con una convención en permisos puede facilitar mantener la integridad de los archivos, es decir buscar que cada archivo sólo pueda ser modificado por el profesor de la materia en el grado correspondiente.
Tal como se sugiere en la plataforma de referencia S-Helio 1.1, cada
profesor puede tener una cuenta personal y puede haber un grupo
profesor
el cual sería el grupo de la jerarquía
completa y el grupo principal de las cuentas de los profesores.
A continuación se ejemplifica como se crearía el grupo y cuentas
para dos profesores en un sistema OpenBSD:
groupadd -v -g 1102 profesor useradd -m -g profesor -c "Pepe Suarez" -s /bin/ksh pepsub useradd -m -g profesor -c "Jeremías Gonzáles" -s /bin/ksh jergon
Cada profesor debería poder modificar sus archivos en el servidor (por ejemplo mediante NIS o vía ssh). Los archivos que deba mantener cada profesor serán de su propiedad y tendrán permisos así:
Sin permiso alguno para otros.
Con permiso de lectura para profesores (y de ejecución en el caso de directorios), pero no de escritura.
Con permiso de lectura y escritura para el propietario (y de ejecución en el caso de directorios).
Desde el directorio planest
del ejemplo
anterior el administrador podría establecer los permisos con:
chmod -R o-xrw,g+r-w,u+rw . find . -type d -exec chmod gu+x {} ";"
También tendría que dejar como propietario de cada archivo el
profesor a cargo. Por ejemplo si el usuario pepsub
es responsable de castellano en 1:
cd 2004/bprimaria/1 chown pepsub:profesor castellano.*
Este esquema permite modificar la estructura sólo al administrador,
ver el plan de estudios sólo a quienes estén en el grupo
profesor
y
al administrador (privacidad) y sólo al profesor responsable de cada
materia y al administrador modificar la información.
Además de este esquema de permisos, de ser posible es mejor
que el servidor donde se almacene la información no pueda ser
accedido por personas que no estén el grupo
profesor
. Por ejemplo
puede haber una red interna sólo para profesores, conectada al
resto de redes por intermedio de un contrafuegos.
Pueden crearse Makefiles y scripts para el interprete de comandos en diversos directorios del plan de estudios. Pueden servir para:
Configurar permisos y propietarios de archivos. Desde el directorio con el plan de estudios un profesor podría ejecutar un script para esto, digamos:
./perm.sh
Que un profesor valide sus archivos de definiciones, clasificaciones y secuencias ejecutando
make
y que pueda limpiar archivos temporales de la validación con:
make limpia
Así cuando el profesor a cargo, edite
planest/2004/bprimaria/1/castellano.cla
,
podría ejecutar make desde el
editor[11]
para validar, y eventualmente desde el mismo editor localizar
rápidamente errores[12].
Que el administrador pueda validar todos los archivos
del plan de estudios. Para esto desde el directorio
planest
(con la nomenclatura usada)
podría ejecutar:
make
o tal vez redireccionando errores a un archivo
err
, para examinarlo:
make 2> err
Y que pueda limpiar archivos temporales de la validación con:
make limpia
En el directorio principal (planest
) podría
emplearse el siguiente Makefile:
# Makefile para verificar toda la estructura de directorios de un # plan de estudios. Dominio público. http://structio.sourceforge.net/repasa valida: m=`find . -name Makefile`; \ for i in $$m ; do \ f=`dirname $$i`; \ if (test "$$f" != ".") then { \ echo "Directorio $$f"; \ (cd $$f; make valida); \ if (test "$$?" != "0") then { exit 1; } fi; \ } fi; \ done limpia: m=`find . -name Makefile`; \ for i in $$m ; do \ f=`dirname $$i`; \ if (test "$$f" != ".") then { \ echo "Directorio $$f"; \ (cd $$f; make limpia); \ } fi; \ done
Su propietario y permisos podrían establecerse con:
chown root:profesor Makefile chmod -R o-xrw,g+r-w,u+rw Makefile
También en el directorio principal podría usarse el siguiente script
perm.sh
, que sigue las convenciones de la
sección anterior y de esta para establecer permisos y propietarios.
#!/bin/sh # Script para establecer permisos y propietarios en un plan de estudios # para repasa. Dominio público. chgrp -R profesor * chown root:profesor Makefile perm.sh chmod -R o-xrw,g+r-w,u+rw . chmod 4750 perm.sh find . -type d -exec chmod gu+x {} ";" p=`pwd`; m=`find . -name perm.sh -user root -group profesor -perm 4750`; for i in $m ; do f=`dirname $i`; if (test "$f" != ".") then { echo $f; cd $f; ./perm.sh; cd $p; } fi; done;
Para que todo profesor pueda ejecutarlo debería tener el bit SUID activo:
chown root:profesor perm.sh chmod 4750 perm.sh
En el directorio de cada grado, podría haber un Makefile
como el siguiente (con el mismo propietario y permisos del
Makefile en el directorio planest
, como es
el mismo para todos los grados podrían emplearse enlaces):
# Para verificar archivos de plan de estudio # Dominio público. 2004. http://structio.sourceforge.net/repasa # Suponemos que además de un interprete de comandos como ksh o bash, pueden # usarse los programas POSIX: make, touch, grep, sed, ls, whoami REPCHQ=repchq -e valida: u=`whoami`; \ if (test "$$u" = "root") then { \ make valida-root; \ } else { \ make valida-prof;\ } fi; valida-root: err=0;u=`whoami`;\ a=`find . "(" -name "*cla" -or -name "*sec" -or -name "*def" ")"| \ sed -e "s/[.]cla/.claok/g;s/[.]sec/.secok/g;s/[.]def/.defok/g"`; \ if (test "$$a" != "") then { make $$a; } fi; valida-prof: err=0;u=`whoami`; \ a=`find . -user "$$u" -and "(" -name "*cla" -or -name "*sec" -or -name "*def" ")"| \ sed -e "s/[.]cla/.claok/g;s/[.]sec/.secok/g;s/[.]def/.defok/g"`; \ if (test "$$a" != "") then { make $$a; } fi; .SUFFIXES: .cla .claok .def .defok .sec .secok .cla.claok: $(REPCHQ) -j "Logro;Indicador" $< touch $@ .def.defok: $(REPCHQ) $< touch $@ .sec.secok: $(REPCHQ) -j "Periodo" $< touch $@ limpia: u=`whoami`; \ if (test "$$u" = "root") then { \ make limpia-root; \ } else { \ make limpia-prof; \ } fi; limpia-prof: u=`whoami`;a=`ls -l *ok | grep "$${u}[ ]*profesor " | \ sed -e "s/.* [0-9]*:[0-9]* \(.*\)$$/\1/g"`; \ echo $$a; \ for i in $$a ; do \ echo $$i; rm -f $$i; \ done; limpia-root: rm -f *ok
y un script perm.sh
que establezca los
permisos y propietarios de los archivo en un año:
#!/bin/sh # Establece permisos y propietarios de archivos en plan de estudios # usando materias de ejemplo con profesor ejemplo pepsub y jergon chgrp -R profesor . chown root:profesor perm.sh chmod -R o-xrw,g+r-w,u+rw .. chmod 4750 perm.sh find . -type d -exec chmod gu+x {} ";" #1 chown pepsub:profesor ../../planest/2004/bprimaria/1/castellano.* ../../planest/2004/bprimaria/1/comportamiento.* ../../planest/2004/bprimaria/1/dh.* ../../planest/2004/bprimaria/1/dibujo.* ../../planest/2004/bprimaria/1/edufisica.* ../../planest/2004/bprimaria/1/matematicas.* chown jergon:profesor ../../planest/2004/bprimaria/1/musica.* ../../planest/2004/bprimaria/1/naturales.* ../../planest/2004/bprimaria/1/religion.* ../../planest/2004/bprimaria/1/sociales.* ../../planest/2004/bprimaria/1/trabajomanual.* chmod o-rxw,g+r-w,u+rw bprimaria/1/*.{cla,sec} #2 chown pepsub:profesor ../../planest/2004/bprimaria/2/castellano.* ../../planest/2004/bprimaria/2/comportamiento.* ../../planest/2004/bprimaria/2/dh.* ../../planest/2004/bprimaria/2/dibujo.* ../../planest/2004/bprimaria/2/edufisica.* ../../planest/2004/bprimaria/2/ ../../planest/2004/bprimaria/2/matematicas.* chown jergon:profesor ../../planest/2004/bprimaria/2/ ../../planest/2004/bprimaria/2/musica.* ../../planest/2004/bprimaria/2/naturales.* ../../planest/2004/bprimaria/2/religion.* ../../planest/2004/bprimaria/2/sociales.* ../../planest/2004/bprimaria/2/trabajomanual.* chmod o-rxw,g+r-w,u+rw bprimaria/2/*.{cla,sec} #3 chown pepsub:profesor ../../planest/2004/bprimaria/3/castellano.* ../../planest/2004/bprimaria/3/comportamiento.* ../../planest/2004/bprimaria/3/dh.* ../../planest/2004/bprimaria/3/dibujo.* ../../planest/2004/bprimaria/3/edufisica.* ../../planest/2004/bprimaria/3/ingles.* ../../planest/2004/bprimaria/3/informatica.* ../../planest/2004/bprimaria/3/matematicas.* chown jergon:profesor ../../planest/2004/bprimaria/3/ ../../planest/2004/bprimaria/3/musica.* ../../planest/2004/bprimaria/3/naturales.* ../../planest/2004/bprimaria/3/religion.* ../../planest/2004/bprimaria/3/sociales.* ../../planest/2004/bprimaria/3/trabajomanual.* chmod o-rxw,g+r-w,u+rw bprimaria/3/*.{cla,sec} #4 chown pepsub:profesor ../../planest/2004/bprimaria/4/castellano.* ../../planest/2004/bprimaria/4/dh.* ../../planest/2004/bprimaria/4/dibujo.* ../../planest/2004/bprimaria/4/edufisica.* ../../planest/2004/bprimaria/4/ingles.* ../../planest/2004/bprimaria/4/informatica.* ../../planest/2004/bprimaria/4/matematicas.* chown jergon:profesor ../../planest/2004/bprimaria/4/ ../../planest/2004/bprimaria/4/musica.* ../../planest/2004/bprimaria/4/naturales.* ../../planest/2004/bprimaria/4/religion.* ../../planest/2004/bprimaria/4/sociales.* ../../planest/2004/bprimaria/4/trabajomanual.* chmod o-rxw,g+r-w,u+rw bprimaria/4/*.{cla,sec} #5 chown pepsub:profesor ../../planest/2004/bprimaria/5/castellano.* ../../planest/2004/bprimaria/5/comportamiento.* ../../planest/2004/bprimaria/5/dh.* ../../planest/2004/bprimaria/5/dibujo.* ../../planest/2004/bprimaria/5/edufisica.* ../../planest/2004/bprimaria/5/ingles.* ../../planest/2004/bprimaria/5/informatica.* ../../planest/2004/bprimaria/5/matematicas.* chown jergon:profesor ../../planest/2004/bprimaria/5/ ../../planest/2004/bprimaria/5/musica.* ../../planest/2004/bprimaria/5/naturales.* ../../planest/2004/bprimaria/5/religion.* ../../planest/2004/bprimaria/5/sociales.* ../../planest/2004/bprimaria/5/trabajomanual.* chmod o-rxw,g+r-w,u+rw bprimaria/5/*.{cla,sec} #6 chown pepsub:profesor ../../planest/2004/bsecundaria/6/arte.* ../../planest/2004/bsecundaria/6/biologia.* ../../planest/2004/bsecundaria/6/castellano.* ../../planest/2004/bsecundaria/6/comportamiento.* ../../planest/2004/bsecundaria/6/dh.* ../../planest/2004/bsecundaria/6/edufisica.* ../../planest/2004/bsecundaria/6/ingles.* ../../planest/2004/bsecundaria/6/matematicas.* chown jergon:profesor ../../planest/2004/bsecundaria/6/ ../../planest/2004/bsecundaria/6/religion.* ../../planest/2004/bsecundaria/6/programacion.* ../../planest/2004/bsecundaria/6/sociales.* chmod o-rxw,g+r-w,u+rw bsecundaria/6/*.{cla,sec} #7 chown pepsub:profesor ../../planest/2004/bsecundaria/7/arte.* ../../planest/2004/bsecundaria/7/biologia.* ../../planest/2004/bsecundaria/7/castellano.* ../../planest/2004/bsecundaria/7/comportamiento.* ../../planest/2004/bsecundaria/7/dh.* ../../planest/2004/bsecundaria/7/edufisica.* ../../planest/2004/bsecundaria/7/ingles.* ../../planest/2004/bsecundaria/7/matematicas.* chown jergon:profesor ../../planest/2004/bsecundaria/7/ ../../planest/2004/bsecundaria/7/religion.* ../../planest/2004/bsecundaria/7/programacion.* ../../planest/2004/bsecundaria/7/sociales.* chmod o-rxw,g+r-w,u+rw bsecundaria/7/*.{cla,sec} #8 chown pepsub:profesor ../../planest/2004/bsecundaria/8/arte.* ../../planest/2004/bsecundaria/8/biologia.* ../../planest/2004/bsecundaria/8/castellano.* ../../planest/2004/bsecundaria/8/comportamiento.* ../../planest/2004/bsecundaria/8/dh.* ../../planest/2004/bsecundaria/8/edufisica.* ../../planest/2004/bsecundaria/8/ingles.* ../../planest/2004/bsecundaria/8/matematicas.* chown jergon:profesor ../../planest/2004/bsecundaria/8/ ../../planest/2004/bsecundaria/8/religion.* ../../planest/2004/bsecundaria/8/programacion.* ../../planest/2004/bsecundaria/8/sociales.* chmod o-rxw,g+r-w,u+rw bsecundaria/8/*.{cla,sec} #9 chown pepsub:profesor ../../planest/2004/bsecundaria/9/arte.* ../../planest/2004/bsecundaria/9/biologia.* ../../planest/2004/bsecundaria/9/castellano.* ../../planest/2004/bsecundaria/9/comportamiento.* ../../planest/2004/bsecundaria/9/dh.* ../../planest/2004/bsecundaria/9/edufisica.* ../../planest/2004/bsecundaria/9/ingles.* ../../planest/2004/bsecundaria/9/matematicas.* chown jergon:profesor ../../planest/2004/bsecundaria/9/ ../../planest/2004/bsecundaria/9/religion.* ../../planest/2004/bsecundaria/9/programacion.* ../../planest/2004/bsecundaria/9/sociales.* chmod o-rxw,g+r-w,u+rw bsecundaria/9/*.{cla,sec} #10 chown pepsub:profesor ../../planest/2004/media/10/aleman.* ../../planest/2004/media/10/arte.* ../../planest/2004/media/10/castellano.* ../../planest/2004/media/10/democracia.* ../../planest/2004/media/10/comportamiento.* ../../planest/2004/media/10/comportamiento.* ../../planest/2004/media/10/dh.* ../../planest/2004/media/10/edufisica.* ../../planest/2004/media/10/fisica.* ../../planest/2004/media/10/filosofia.* ../../planest/2004/media/10/matematicas.* chown jergon:profesor ../../planest/2004/media/10/ ../../planest/2004/media/10/religion.* ../../planest/2004/media/10/programacion.* ../../planest/2004/media/10/quimica.* chmod o-rxw,g+r-w,u+rw media/10/*.{cla,sec} #11 chown pepsub:profesor ../../planest/2004/media/11/aleman.* ../../planest/2004/media/11/arte.* ../../planest/2004/media/11/castellano.* ../../planest/2004/media/11/democracia.* ../../planest/2004/media/11/comportamiento.* ../../planest/2004/media/11/dh.* ../../planest/2004/media/11/edufisica.* ../../planest/2004/media/11/fisica.* ../../planest/2004/media/11/filosofia.* ../../planest/2004/media/11/matematicas.* chown jergon:profesor ../../planest/2004/media/11/ ../../planest/2004/media/11/religion.* ../../planest/2004/media/11/programacion.* ../../planest/2004/media/11/quimica.* chmod o-rxw,g+r-w,u+rw media/11/*.{cla,sec}
Para facilitar el trabajo en grupo y controlar versiones, recomendamos emplear CVS. Puede ser dejando el repositorio en el mismo servidor para profesores o para mayor respaldo en otro servidor de la red interna de profesores.
Suponiendo que en el servidor ya está instalado CVS habría que realizar tres tipos de actividades:
El administrador configura un repositorio para el plan de estudios.
Cada profesor trabaja sus porciones del plan de estudio en una copia local y actualiza periodicamente el repositorio.
Periodicamente el administrador realiza labores. Por ejemplo al finalizar cada periodo agrega un tag para marcar estado y poderlo recuperar en el futuro si se requiere.
Aunque en esta sección se dan ejemplos de como emplear CVS para estas actividades, sugerimos antes consultar documentación sobre CVS en las secciones correspondientes de [AA1.1] o en [CVS]
El repositorio puede ser creado por el administrador,
digamos en /var/colegio-cvs
con:
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh cd /var mkdir cvs-colegio cd cvs-colegio cvs init
Después puede agregar un módulo con un plan de estudios
con la estructura deseada y parcialmente lleno. Suponiendo que
el plan de estudios está en el directorio
/home/pepsub/planest
[13] se añade el módulo y se configuran sus permisos
con:
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh cd /home/pepsub/planest cvs -z3 import planest vendor start cd /var/cvs-colegio/planest chgrp -R profesor . chmod -R o-xrw .
Dado que CVS puede cambiar el propietario de los archivos en el repositorio, no resulta útil configurar más detalles en los permisos y usuarios del repositorio. Hay otra alternativa que se presenta más adelante (ver Sección 2.5.4, “Mas ayudas para automatizar”).
Tras la configuración del repositorio cada profesor podría sacar
su copia local del plan de estudios completo junto con los
Makefile y scripts para facilitar edición y validación. Note
que antes de sacar su copia local debe asegurarse de no
tener un directorio con el mismo nombre del módulo (e.g.
planest
), después podría ejecutar:
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh cd ~ cvs -z3 co planest
y el administrador podria permitirle cuadrar permisos (con
el script perm.sh
) ejecutando:
cd planest find . -name perm.sh -exec chown root:profesor {} ";" find . -name perm.sh -exec chmod 4750 {} ";" ./perm.sh
Después de sacar la copia local (que sólo requiere hacerse una vez), cada profesor podría editar, validar y actualizar en el respositorio los archivos que le corresponden. La actualización en el repositorio es muy importante porque con esto, indicará al administrador que usted está avanzando o que ha completado una meta en la edición de sus logros e indicadores (por ejemplo indicaría que terminó de escribir y validar logros e indicadores de un periodo).
Primero actualice su copia local con los cambios recientes en el repositorio (eventualmente el administrador puedo haber corregido sus archivos):
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh cvs -z3 update -Pd
Después de editar y validar (digamos sus archivos del directorio
~/planest/2004/bprimaria/1
) puede actualizar el
repositorio con sus modificaciones emplenado:
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh cd ~/planest/2004/bprimaria/1 cvs commit -m "Logros e indicadores del primer periodo"
Poniendo un comentario descriptivo del cambio que está actualizando en lugar de 'Logros e indicadores del primer periodo'.
Para evitar tener que establecer las variables
CVSROOT
y CVS_RSH
cada
vez que desee usar cvs, puede agregar
estas líneas al archivo de configuración de su interprete de
comandos (por ejemplo .profile
si usa
ksh o .bash_profile
si usa bash):
export CVSROOT=/var/cvs-colegio export CVS_RSH=ssh
Cada vez que en el repositorio se completa una meta importante, puede ser apropiado dejar una "marca[14]" en el que permita recuperar la versión marcada, por ejemplo al finalizar un periodo, cuando todos los logros e indicadores han sido ingresados. Suponiendo que el administrador quisiera marcar la versión que hay en un instante con la marca 'p2004-1', desde su copia local del repositorio ejecutaría:
cvs rtag 'p2004-1' planest
Posterioremente si desea recuperar la versión marcada
del módulo planest
puede usar:
cd tmp cvs co -r p2004-1 planest
Tenga en cuenta que la versión que recupere así quedará con una "marca pegajosa"[15]. que hará que CVS la diferencie de la versión más reciente.
Es posible configurar CVS para que antes de actualizar
el repositorio, verifique que el usuario pueda modificar los
archivos que va a actualizar (en caso de que no haya ejecutado
el script para establecer permisos i.e
perm.sh
).
De esta forma sólo quien esté autorizado para
modificar un archivo podrá ingresarlo al CVS.
En esta sección se presenta como puede hacerse esta configuración
suponiendo que la copia local de cada profesor está en el mismo
computador donde está el repositorio (consideramos que es posible
que funcione también con el método ssh
, pero no
con pserver
).
CVS puede configurarse para ejecutar un script antes de
realizar un commit
, esta configuración se
hace en el archivo commitinfo
del directorio
CVSROOT
del repositorio. Para obtener
una copia de ese directorio ejecute:
cd tmp export CVSROOT=/var/cvs-colegio cvs co CVSROOT
Después pase al directorio CVSROOT
obtenido
y edite el archivo commitinfo
, agregando al
final una línea como la siguiente:
^planest /usr/local/bin/chqperm.sh
la cual especifica que antes de hacer actualizaciones a un módulo
que comience con planest
debe ejecutarse el
script /usr/local/bin/chqperm.sh
.
El script /usr/local/bin/chqperm.sh
puede
adaptarlo para su caso a partir del siguiente. Note que este
script supone la nomenclatura hasta ahora presentada y que cada
profesor tendrá en su directorio personal (e.g
/home/pepsub
) el directorio
planest
con su copia local del repositorio:
# Chequea permisos y verifica archivos por actualizar en el repositorio CVS. # Para ser usado desde CVSROOT/commitinfo # Dominio público. Sin garantías. 2003. http://structio.sourceforge.net/repasa usuario=`whoami` echo "Chequeando permisos y verificando. Usuario: $usuario" dir=$1 shift arch="$*" for f in "$arch" ; do exst=1; n=$dir/$f; echo $n; if (test "$usuario" = "root") then { exst=0; } elif (test "$usuario" = "pepsub") then { case $n in *planest/2004/bprimaria/1/castellano.*) exst=0;; *planest/2004/bprimaria/1/comportamiento.*) exst=0;; *planest/2004/bprimaria/1/dibujo.*) exst=0;; *planest/2004/bprimaria/1/edufisica.*) exst=0;; *planest/2004/bprimaria/1/dh.*) exst=0;; *planest/2004/bprimaria/1/matematicas.*) exst=0;; esac } elif (test "$usuario" = "jergon") then { case $n in *planest/2004/bprimaria/1/musica.*) exst=0;; *planest/2004/bprimaria/1/naturales.*) exst=0;; *planest/2004/bprimaria/1/religion.*) exst=0;; *planest/2004/bprimaria/1/sociales.*) exst=0;; *planest/2004/bprimaria/1/trabajomanual.*) exst=0;; esac } fi; if (test "$exst" != "0") then { echo "No puede escribir '$n'"; exit 1; } fi; dirloc=`echo $dir | sed -e "s|.*planest/\(.*\)|/home/$usuario/planest/\1|g"`; nloc=$dirloc/$f; repchq -D $dirloc $nloc if (test "$?" != "0") then { echo "Problemas verificando"; exit 1; } fi; done; exit 0;
[11] Desde vim puede
ejecutarse con :make
[12] Desde
vim, después de ejecutar
make quedará en el primer error
y podrá pasar al siguiente con :cn
[13] Antes
de crear el repositorio es recomendable eliminar los
archivos que no se deban agregar o incluirlos en un
archivo /home/pepsub/planest/.cvsignore
.
de emplear los Makefile
de la sección
anterior, tal archivo podría incluir:
*ok
[14] En inglés tag
[15] En inglés sticky tag.