ver - ¿Hay alguna manera de obtener un estado corto de CVS desde la línea de comando?
estados para whatsapp de canciones (4)
@jmcnamara: ¡Buen consejo!
Y todo este tiempo he estado usando este script bash:
cvs -q status "$@" | grep ''^[?F]'' | grep -v ''Up-to-date''
Al hacer una cvs update
, obtienes un buen resumen del estado del repositorio, por ejemplo:
M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt
¿Hay alguna manera de obtener esto sin actualizar realmente? Sé que hay un cvs status
, pero esta es una forma de verboso:
===================================================================
File: file6.txt Status: Up-to-date
Working revision: 1.2
Repository revision: 1.2 /var/cvs/cvsroot/file6.txt,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Por supuesto, podría hacer un guión para hacer la transformación de este último al anterior, pero parece una pérdida de tiempo ya que los cvs obviamente pueden producir el primero.
Puede usar el indicador -n para obtener la salida de actualización sin actualizar los archivos. También puede agregar -q (silencio) para suprimir cualquier mensaje del servidor.
cvs -q -n update
Si está utilizando CVSNT también puede hacer cvs status -q
que también producirá una salida mucho más breve que el comando de estado regular (también solo una línea por archivo). Con las versiones más recientes, incluso puede hacer cvs status -qq
que omitirá los archivos actualizados.
Tengo algunos alias, que pueden ser útiles para alguien:
alias cvsstatus_command=''cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | /
grep -v "/.so" | grep -v "/.[c]*project"''
alias cvsstatus_color=''nawk ''"''"''BEGIN /
{ /
arr["Needs Merge"] = "0;31"; /
arr["Needs Patch"] = "1;31"; /
arr["conflicts"] = "1;33"; /
arr["Locally Modified"] = "0;33"; /
arr["Locally Added"] = "0;32" /
} /
{ /
l = $0; /
for (pattern in arr) { /
gsub(".*" pattern ".*", "/033[" arr[pattern] "m&/033[0m", l); /
} /
print l; /
}''"''"
alias cvsstatus=''cvsstatus_command | cvsstatus_color''
Esto solo mostrará los nombres de los archivos y su estado, ignorará todos los archivos actualizados, eliminará todos los archivos de proyecto eclipse y los objetos compartidos y también imprimirá las líneas en diferentes colores, dependiendo del estado (por ejemplo, tengo naranja para localmente) modificado; rojo para archivos, que necesitan fusión; verde para agregado local, etc.)