¿Hay alguna manera de obtener un estado CVS corto desde la línea de comandos?

StackOverflow https://stackoverflow.com/questions/211819

  •  03-07-2019
  •  | 
  •  

Pregunta

Al realizar 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 cvs status , pero esta es una forma detallada:

===================================================================
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 script para hacer la transformación de este último al anterior, pero parece una pérdida de tiempo, ya que obviamente los CVS pueden producir el primero.

¿Fue útil?

Solución

Puede usar el indicador -n para obtener la salida de actualización sin actualizar realmente los archivos. También puede agregar -q (silencioso) para suprimir cualquier mensaje del servidor.

cvs -q -n update

Otros consejos

@jmcnamara: ¡Buen consejo!

Y todo este tiempo he estado usando este script bash:

cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'

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 = <*>; \
        for (pattern in arr) { \
            gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
        } \
        print l; \
    }'"'"

alias cvsstatus='cvsstatus_command | cvsstatus_color'

Esto mostrará solo los nombres de los archivos y su estado, ignorará todos los archivos actualizados, eliminará todos los archivos de proyecto de eclipse y los objetos compartidos y también imprimirá las líneas en diferentes colores, dependiendo del estado (por ejemplo, tengo naranja para modificar localmente; rojo para archivos, necesita fusión; verde para agregar localmente, etc.)

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 normal (también una línea por archivo). Con versiones más recientes, incluso puede hacer cvs status -qq que omitirá los archivos actualizados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top