Discussion:
CVS fichero bloqueados
(demasiado antiguo para responder)
Simon
2004-10-01 12:40:47 UTC
Permalink
¿Con que comando se pueden ver en el cvs los ficheros que se encuentran bloqueados?
Pascal Bourguignon
2004-10-02 05:11:06 UTC
Permalink
Post by Simon
¿Con que comando se pueden ver en el cvs los ficheros que se encuentran bloqueados?
Ninguno. cvs no bloquea los ficheros.

Los programadores tomen una copia cada uno:

programador 1 programador 2
---------------------------- ----------------------------
cvs checkout $module cvs checkout $module

y hacen modificaciones al mismo tiempo sobre posiblemente los mismos
ficheros:

cd $module ; emacs fic1 fic2 cd $module ; vi fic1 fic2
make && make test make && make test

Cuando estan satisfechos de sus modificaciones, combinan sus modificaciones:

cvs update
# no hay modificaciones en el repository todavia
cvs commit

cvs update
# hay modificaciones en el
# repository. Dos clases:
M fic1 # modificaciones en
# partes distinctas.
C fic2 # modificaciones en
# conflicto.

vi fic2
make && make test # comprobar que
# la intergración de las
# modificaciones de los dos
# programadores esta buena.

cvs commit

Y para obtener las modificaciones del programador 2:

cvs update
--
__Pascal Bourguignon__ http://www.informatimago.com/

Our enemies are innovative and resourceful, and so are we. They never
stop thinking about new ways to harm our country and our people, and
neither do we.
Simon
2004-10-02 16:43:12 UTC
Permalink
Si el usuario tiene permisos para administrar el cvs, puede bloquear y
desbloquear ficheros, para que otro usuario no pueda modificarlos

cvs admin -l [fichero/s]
y
cvs admin -u [fichero/s]

Mi duda es como se yo todos los ficheros que están bloqueados y por
quien.
Ya sé que al intentar una modificación sobre un fichero bloqueado te
lo indica, pero lo que me interesa es un comando que me diga la
situación en que se encuentran todos los ficheros.
Post by Pascal Bourguignon
Post by Simon
¿Con que comando se pueden ver en el cvs los ficheros que se encuentran bloqueados?
Ninguno. cvs no bloquea los ficheros.
programador 1 programador 2
---------------------------- ----------------------------
cvs checkout $module cvs checkout $module
y hacen modificaciones al mismo tiempo sobre posiblemente los mismos
cd $module ; emacs fic1 fic2 cd $module ; vi fic1 fic2
make && make test make && make test
cvs update
# no hay modificaciones en el repository todavia
cvs commit
cvs update
# hay modificaciones en el
M fic1 # modificaciones en
# partes distinctas.
C fic2 # modificaciones en
# conflicto.
vi fic2
make && make test # comprobar que
# la intergración de las
# modificaciones de los dos
# programadores esta buena.
cvs commit
cvs update
Pascal Bourguignon
2004-10-02 19:36:19 UTC
Permalink
Post by Simon
Post by Pascal Bourguignon
Post by Simon
¿Con que comando se pueden ver en el cvs los ficheros que se
encuentran bloqueados?
Ninguno. cvs no bloquea los ficheros.
Si el usuario tiene permisos para administrar el cvs, puede bloquear y
desbloquear ficheros, para que otro usuario no pueda modificarlos
cvs admin -l [fichero/s]
y
cvs admin -u [fichero/s]
Mi duda es como se yo todos los ficheros que están bloqueados y por
quien.
Ya sé que al intentar una modificación sobre un fichero bloqueado te
lo indica, pero lo que me interesa es un comando que me diga la
situación en que se encuentran todos los ficheros.
No sé. Por un lado, todos los archivos en el repository tienen esto en
la cabeza:

# grep lock *,v
described-2.txt,v:locks; strict;
described-3.txt,v:locks; strict;
described-4.txt,v:locks; strict;

Y por otro lado, cuando hago cvs admin -l o -u, no cambia nada en el
repostory...

cvs admin = cvs rcs, es decir, implementa funciones de rcs. Pero el
man rcs no dice nada tampoco sobre obtener el estado de los archivos.
Con rcs, se veia si un archivo estaba bloqueado en el $Header$, si me
acuerdo correctamente. Podrias probar añadir $Header$ dentro del
archivo, cvs commit, cvs admin -l, cvs update o cvs update -A

cvs status -v no mentiona el bloqueo.


Lo unico que encontré es:

[***@thalassa test1]$ cvs admin -l wang
RCS file: /cvs/test1/wang,v
1.16 locked
done

[***@thalassa test1]$ cvs admin -l wang
RCS file: /cvs/test1/wang,v
done

[***@thalassa test1]$ cvs admin -u wang
RCS file: /cvs/test1/wang,v
1.16 unlocked
done

[***@thalassa test1]$ cvs admin -u wang
RCS file: /cvs/test1/wang,v
No locks are set.
done
RCS file: /cvs/test1/wang,v

Es decir, por saber si un archivo esta bloqueado, falta probar bloquearlo.
Si no dice nada:

RCS file: /cvs/test1/wang,v
done

es que ya esta bloqueado. Si dice:
RCS file: /cvs/test1/wang,v
1.16 locked
done

es que no estaba bloqueado, y ya lo es.

[***@thalassa test1]$ cat bloqueado-p
#!/bin/bash
file="$1"
if cvs admin -l "$file" 2>&1 | grep -q -s locked ; then
echo no bloqueado
cvs admin -u "$file" >/dev/null 2>&1
else
echo bloqueado
fi
[***@thalassa test1]$ ./bloqueado-p wang
no bloqueado
[***@thalassa test1]$ ./bloqueado-p wang
no bloqueado
[***@thalassa test1]$ cvs admin -l wang
RCS file: /cvs/test1/wang,v
1.16 locked
done
[***@thalassa test1]$ ./bloqueado-p wang
bloqueado
[***@thalassa test1]$ ./bloqueado-p wang
bloqueado
[***@thalassa test1]$ cvs admin -u wang
RCS file: /cvs/test1/wang,v
1.16 unlocked
done
[***@thalassa test1]$ ./bloqueado-p wang
no bloqueado
[***@thalassa test1]$ ./bloqueado-p wang
no bloqueado
[***@thalassa test1]$


http://www.devguy.com/fp/cfgmgmt/cvs/ habla de un script perl
findlock.pl para ver los archivos bloqueados.

Parece que hay nuevas opciones a usar en lugar de cvs admin -l / -u:
cvs edit -c
cvs commit -c
--
__Pascal Bourguignon__ http://www.informatimago.com/

To vote Democrat or Republican, it's like changing of cabin in the Titanic.
Loading...